У меня есть 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;
}
Это приводит к тому, что ни один элемент списка больше не может быть выбран вообще. Но это не помогло сделать вложенные кнопки доступными для выбора.
У кого-нибудь есть идея?