我有一个包含ImgaeView的ListItem。每当单击ListItem的图像或图标时,我都要将其删除。这是我的ListItemActivity。如何调用适配器的remove方法来删除ListItem?我在引用方面遇到了问题。如果有更好的方法,请告诉我。
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;
}
}发布于 2012-08-20 07:17:03
如果你只是想把它隐藏在ListView上,你可以使用:
TaskListItem.this.setVisibility(View.GONE);如果要将其从列表中删除,则需要将该项定位在适配器的数据源中。
您可以在适配器的getView()方法中创建onClickListener并将其分配给ImageView。它可能看起来像这样:
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;
}
}发布于 2012-08-20 07:09:25
您可能希望从包含列表的活动中捕获列表项的单击,例如,在list.setOnListItemClick()的回调中或在ListActivtiy的onListItemClick中。
当您获得单击事件时,然后调用adapter.remove(索引)。
https://stackoverflow.com/questions/12030363
复制相似问题