簡體   English   中英

單擊列表項時如何分隔所謂的onListItemClick?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM