Mam ListView
gdzie każdy element na liście zawiera TextView i dwa różne przyciski. Coś takiego:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Za pomocą tego kodu mogę utworzyć OnItemClickListener
dla całego elementu:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Nie chcę jednak, aby można było klikać cały element, ale tylko dwa przyciski każdego elementu listy.
Więc moje pytanie brzmi: jak zaimplementować onClickListener dla tych dwóch przycisków z następującymi parametrami:
int button
(który przycisk elementu został kliknięty)int position
(który jest elementem na liście, na którym nastąpiło kliknięcie przycisku)
Aktualizacja: Znalazłem rozwiązanie opisane w mojej odpowiedzi poniżej. Teraz mogę kliknąć / dotknąć przycisku za pomocą ekranu dotykowego. Nie mogę jednak ręcznie wybrać go za pomocą trackballa. Zawsze zaznacza cały element listy i stamtąd przechodzi bezpośrednio do następnego elementu listy, ignorując przyciski, mimo że ustawiłem .setFocusable(true)
i setClickable(true)
dla przycisków w getView()
.
Dodałem również ten kod do mojego niestandardowego adaptera listy:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
To powoduje, że żaden element listy nie jest już do wyboru. Ale nie pomogło to w wybraniu zagnieżdżonych przycisków.
Czy ktoś ma pomysł?