2012-02-11 48 views
0

我有一個包含複選框的項目列表。列表項左側有文本,右側有複選框。當我點擊一個列表項時,點擊該複選框,並在onListItemClick方法中觸發剩餘的意圖。如何更改我的代碼,以便在選中複選框時,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 
} 

回答

0

OK,大量的試驗和錯誤之後,我得到了這個工作。我很高興終於看到我在找什麼。以下是我結束了:

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; 
     } 
    }); 



} 
+0

還有一個問題,我得先單擊列表項,然後longclick正常工作將在所有項目名單。 – Stagleton 2012-02-13 09:26:47

相關問題