[英]How to separate what is called an onListItemClick when a list item is clicked?
我有一個包含復選框的項目列表。 列表項的左側有文本,右側有一個復選框。 當我單擊列表項時,將選中該復選框,它會在onListItemClick方法中激發其余的意圖。 如何更改我的代碼,以便在選中復選框時,onListItemClick可以執行一項操作,而在單擊文本時,onListItemClick可以執行其他操作?
我有這樣的方法來刷新我的列表項:
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;
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.