首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过单击ListItem中的ImageView来删除ListItem

通过单击ListItem中的ImageView来删除ListItem
EN

Stack Overflow用户
提问于 2012-08-20 05:59:30
回答 2查看 1.3K关注 0票数 1

我有一个包含ImgaeView的ListItem。每当单击ListItem的图像或图标时,我都要将其删除。这是我的ListItemActivity。如何调用适配器的remove方法来删除ListItem?我在引用方面遇到了问题。如果有更好的方法,请告诉我。

代码语言:javascript
复制
public class TaskListItem extends LinearLayout {

    private Task task;
    private TextView taskName;
    private TextView responsible;
    private TextView priority;
    private ImageView bin;
    protected TaskListAdapter adapter;

    public TaskListItem(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        taskName = (TextView)findViewById(R.id.task_name);
        responsible = (TextView)findViewById(R.id.responsible);
        priority = (TextView)findViewById(R.id.priority);
        bin = (ImageView)findViewById(R.id.remove_task);        
    }

    public void setTask( final Task task) {
        this.task = task;
        taskName.setText(task.getName() + " ");
        //Set responsibility text
        responsible.setText("Resp: " + task.getReponsible());
        //Set priority text
        priority.setText(" Prio: " + task.getPiotiry());
        /*
         * onClickListener for image to delete
         */
        bin.setOnClickListener(new OnClickListener() {          
            public void onClick(View v) {
                **call the adapters remove method to delete this item with parameter (this).**  
            }
        });
    }

    public Task getTask() {
        return task;
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-20 07:17:03

如果你只是想把它隐藏在ListView上,你可以使用:

代码语言:javascript
复制
TaskListItem.this.setVisibility(View.GONE);

如果要将其从列表中删除,则需要将该项定位在适配器的数据源中。

您可以在适配器的getView()方法中创建onClickListener并将其分配给ImageView。它可能看起来像这样:

代码语言:javascript
复制
public class MyAdapter extends BaseAdapter{

    List<Task> mData = null;

  public MyAdapter(List<Task> dataSource){
    mData = dataSource;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
//    ... 
    final Tast task = getItem(position);
    TaskListItem listItem = new TaskListItem();
    listItem.setTask(task);
    listItem.bin.setOnClickListener(new OnClickListener(){
      public void onClick(View v) {
        mData.remove(task); // or mData.remove(position);
        // might need to call notifyDataSetChanged() depending on the adapter you're using
      }
     };
    return listItem;
    }
  }
票数 2
EN

Stack Overflow用户

发布于 2012-08-20 07:09:25

您可能希望从包含列表的活动中捕获列表项的单击,例如,在list.setOnListItemClick()的回调中或在ListActivtiy的onListItemClick中。

当您获得单击事件时,然后调用adapter.remove(索引)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12030363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档