У меня есть ListView
, где каждый элемент в списке содержит TextView и две разные кнопки. Что-то вроде этого:Android: Элементы ListView с несколькими кнопками с кнопками
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;
}
Это приводит к тому, что ни один элемент списка не выбирается на все больше. Но это не помогло сделать выбор вложенных кнопок.
Любая идея?
Эти еще нужны? –
Если вы посмотрите на код BaseAdapter, вы увидите, что areAllItemsEnabled() и isEnabled() просто закодированы в true, что делает их простыми заполнителями без какой-либо логики. –
Что делать, если я хочу использовать SimpleCursorAdapter? Должен ли я сделать собственный адаптер, расширяющий simplecursoradapter? – oratis