У меня есть ListView
, где каждый элемент в списке содержит TextView и две разные кнопки. Что-то вроде этого:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
С помощью этого кода я могу создать OnItemClickListener
для всего элемента:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Однако, я не хочу, чтобы весь элемент был доступен для кликабельности, но только две кнопки каждого элемента списка.
Итак, мой вопрос: как мне реализовать onClickListener для этих двух кнопок со следующими параметрами:
-
int button
(нажата кнопка элемента) -
int position
(который является элементом в списке, на котором была нажата кнопка)
Обновление: Я нашел решение, как описано в моем ответе ниже. Теперь я могу щелкнуть/нажать кнопку с помощью сенсорного экрана. Однако я не могу вручную выбрать его с помощью трекбола. Он всегда выбирает весь элемент списка и оттуда переходит непосредственно к следующему элементу списка, игнорируя кнопки, даже если я установил .setFocusable(true)
и setClickable(true)
для кнопок в getView()
.
Я также добавил этот код к своему адаптеру пользовательского списка:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Это приводит к тому, что элемент списка не может быть выбран вообще. Но это не помогло в выборе вложенных кнопок.
Любая идея?