Как отделить то, что называется onListItemClick при нажатии на элемент списка? - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть список элементов, которые включают флажок. Слева от элемента списка есть текст, а справа - флажок. Когда я щелкаю элемент списка, устанавливается флажок, и он запускает остальную часть намерения в методе 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   
 }

1 Ответ

0 голосов
/ 12 февраля 2012

ОК, после долгих проб и ошибок я получил это на работу. Я очень рад, наконец, увидеть то, что я искал. Вот что я закончил:

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



 }
...