我想通過單擊圖片(imageView)從ListView中刪除項目。我必須這樣做,我已經設法通過點擊項目本身來做到這一點,但對於這個項目我不允許這樣做。通過單擊ImageView小部件從列表視圖中刪除項目
我的適配器擴展BaseAdapter和我的TaskListItem擴展相對佈局 我使用的是自定義佈局xml。
protected void onFinishInflate() {
super.onFinishInflate();
textV = (TextView)findViewById(R.id.textViewTask);
textP = ((TextView)findViewById(R.id.textPriority));
textR = ((TextView)findViewById(R.id.textResponsible));
imageD = ((ImageView)findViewById(R.id.imageDeleteTask));
imageD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteTask();
}
});
}
和deleteTask()
方法:
protected void deleteTask() {
//MainActivity.adapter.clear(position)
Toast.makeText(getContext(), "Task Deleted", Toast.LENGTH_SHORT).show();
MainActivity.adapter.notifyDataSetChanged();
}
我的問題是可變位置。我無法找到一種方法來獲取所選項目的位置(通過單擊imageView小部件)。
最後,這是我的適配器代碼。任何幫助將非常感激:
public class TaskListAdapter extends BaseAdapter {
private ArrayList<Task> tasks;
private Context context;
public TaskListAdapter(ArrayList<Task> tasks, Context context) {
super();
this.tasks = tasks;
this.context = context;
}
@Override
public int getCount() {
return tasks.size();
}
@Override
public Task getItem(int position) {
return (null==tasks)? null: tasks.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TaskListItem tli;
Log.v("test","dasfsd");
if (null == convertView) {
tli = (TaskListItem)View.inflate(context, R.layout.task_list_item, null);
}
else {
tli = (TaskListItem)convertView;
}
tli.setTask(tasks.get(position));
return tli;
}
public void forceReload() {
notifyDataSetChanged();
}
public void clear(int position) {
tasks.remove(position);
}
更新代碼OnClickListener上ImageView的
public void setTask(final Task task) {
this.task = task;
//textV.set(task.isComplete());
textV.setText(task.getName());
textP.setText(task.getPriority());
textR.setText(task.getResponsible());
imageD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// probably get position
// deleteTask();
MainActivity.adapter.notifyDataSetChanged();
}
});
}
protected void deleteTask() {
int position=0;
MainActivity.adapter.clear(position);
Toast.makeText(getContext(), "Task Deleted", Toast.LENGTH_SHORT).show();
MainActivity.adapter.notifyDataSetChanged();
//testing - problem cannot delete item.
}
那麼你是如何選擇的任務? – 2012-08-17 17:33:17
我有一個點擊監聽圖像檢查更新代碼 – 2012-08-17 18:16:20