2012-08-17 67 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

相關問題