2012-08-17 70 views
0

我想通过单击图片(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. 
} 
+0

那么你是如何选择的任务? – 2012-08-17 17:33:17

+0

我有一个点击监听图像检查更新代码 – 2012-08-17 18:16:20

回答

1

要获得位置,添加位置的视图标签

@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) , position); 
    return tli; 
} 



public void setTask(final Task task , int position) { 
    this.task = task; 
    //textV.set(task.isComplete()); 
    textV.setText(task.getName()); 
    textP.setText(task.getPriority()); 
    textR.setText(task.getResponsible()); 
    imageD.setTag(new Integer(position)); 
    imageD.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int position = (Integer) v.getTag(); 
      deleteTask(position); 
      MainActivity.adapter.notifyDataSetChanged(); 

      } 
     }); 
} 

protected void deleteTask(int position) { 
    MainActivity.adapter.clear(position); 
    Toast.makeText(getContext(), "Task Deleted", Toast.LENGTH_SHORT).show(); 
    MainActivity.adapter.notifyDataSetChanged(); 

    //testing - problem cannot delete item. 
} 
+0

我在哪里添加标签?对不起,我还在学习编程。 – 2012-08-17 18:20:54

+0

非常感谢你...像一个魅力工作..真的很感谢你的帮助球员。 – 2012-08-17 18:35:12

相关问题