У мене, 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;
}
Це призводить до того, що жоден елемент списку більше не вибирається. Але це не допомогло зробити вибір вкладених кнопок.
Хтось ідею?