我有一个包含复选框的项目列表。列表项左侧有文本,右侧有复选框。当我单击列表项时,复选框会被单击,它会激发onListItemClick方法中的其余意图。如何更改代码,以便在选中复选框时onListItemClick执行一件事,而在单击文本时onListItemsClick执行其他事?
我有一个这样的方法来刷新我的列表项目:
public void refreshlist(){
mymap = null;
mymap = providerTester.downLoadinfo(value1,value2);
list_my = new ArrayList<String>(mymap.keySet());
adapter = new ArrayAdapter<String>(ClassName.this, android.R.layout.simple_list_item_multiple_choice, list_my);
//using builtin list_item
getListView().setChoiceMode(2);
setListAdapter(adapter);
}
然后我有一个onListClickListener设置,如下所示:
@Override
protected void onListItemClick(ListView l, View v, int position, long id){
super.onListItemClick(l, v, position, id);
My_DownLoad my_dl = (My_DownLoad) map_thoughts.get(my_list.get(position));
Integer id1 = position;
Log.i("ListOthers", "onListItemClick position: " + id1.toString());
Long id2 = id;
Log.i("ListOthers", "onListItemClick position: " + id2.toString());
//For Some reason id2 and id1 are the same
//I was thinking about setting up a case statement if something different happens if I click the checkbox and not the text
//start activity if text is checked
//change state of checkbox if checkbox is clicked
}
好吧,经过大量的尝试和错误,我终于成功了。我很高兴终于看到我在寻找什么。以下是我最终得到的:
public void refreshlist(){
mymap = null;
mymap = providerTester.downLoadinfo(value1,value2);
list_my = new ArrayList<String>(mymap.keySet());
adapter = new ArrayAdapter<String>(ClassName.this,android.R.layout.simple_list_item_multiple_choice, list_my);
//using builtin list_item
getListView().setChoiceMode(2);
setListAdapter(adapter);
}
和第二种方法
@Override
protected void onListItemClick(ListView l, View v, int position, final long id){
super.onListItemClick(l, v, position, id);
final My_DownLoad my_dl = (My_DownLoad) map_thoughts.get(my_list.get(position));
final Intent i = new Intent(this, NextActivity.class);
l.setOnItemLongClickListener(new OnItemLongClickListener(){
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3){
}
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
//add values to intent
startActivity(i);
return false;
}
});
}