如何在单击列表项时分离所谓的onListItemClick



我有一个包含复选框的项目列表。列表项左侧有文本,右侧有复选框。当我单击列表项时,复选框会被单击,它会激发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;
        }
    });

 }

最新更新