2016-09-19 2 views
1

У меня есть ListView, когда я проверяю строку, щелчок «isSelected()» всегда возвращает false, даже если он был ранее выбран, второй раз, когда я его проверяю, возвращает true. ListView нужно дважды щелкнуть, чтобы «isSelected()» работал ... Я видел похожие проблемы в SO, но ни одно из предлагаемых решений не работает.Android: isSelected не работает в первый раз в ListView

Примечание: Я использую пользовательский ListAdapter, что там, где я слушаю для строки клик, так что я не могу использовать setOnItemClickListener на Listview

row.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(final View v) { 

      v.clearFocus(); 

      if (v.isSelected()) 
      { 

Как предложил я добавил setOnItemClickListener к Listview, но теперь d oesn't обнаружить, если выбран, он всегда возвращает ложь

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, 
           long id) { 

      Log.v("myApp", "onItemClick is " + position); 

      if (v.isSelected()) 
      { 
       v.setSelected(false); 

       Log.v("MyApp", "fiend deselect row " + position); 

       v.setBackgroundResource(R.color.default_color); 

      } else { 
       Log.v("MyApp", "fiend click row " + position); 

       v.setSelected(true); 

       v.setBackgroundResource(R.color.pressed_color); 

      } 

     } 
    }); 
+0

Добавить слушателя в ListView не к ряду – XxGoliathusxX

+0

сделал это, но теперь это ИТС всегда возвращал false для «IsSelected()» – cal

ответ

1

Набор listView.onItemClicklistener вместо row.setOnClickListener , как это:

listView.setOnItemClickListener(new OnItemClickListener() { 
          @Override 
          public void onItemClick(AdapterView<?> a, View v, int position, 
            long id) { 


           } 
         }); 
+0

Я использую настраиваемый ListAdapter, где я слушаю щелчок по строке, поэтому я не могу использовать setOnItemClickListener в Listview – cal

+0

, вам не нужно слушать строку, щелкнув, если вы установите onItemClickListener, где вы можете получить элемент, который пользователь нажал. –

+0

См. Мое редактирование выше, теперь он всегда возвращает false для «isselected» – cal

Смежные вопросы