Listview itemclick не работает
-
У меня есть ListView в моем ListView show ImageButton.
-
Я установил focusalble "false" и focusableInTouchMode "false" в ImageButton.
-
Я установил ListView.OnItemClickListner. Когда я запускаю проект, он показывает мой ListView.
-
Но когда я нажимаю на Listview, он не работает.
-
Затем я удаляю ImageButton в макете и снова запускаю свой проект, когда я нажимаю ListView. Он работает
-
Что не так?
Ответы
Ответ 1
android:focusable="false"
android:focusableInTouchMode="false"
не работает для ImageButton.
В вашем макете xml добавьте это свойство в корневой макет
android:descendantFocusability="blocksDescendants"
Он отлично работает для списка, содержащего ImageButton.
Ответ 2
Вы не единственный страдальщик:) Такое поведение часто рассматривается как ошибка разработчиков Android. Посмотрите на эту ссылку их беседы.
Чтобы решить вашу проблему, просто добавьте атрибут android:descendantFocusability="blocksDescendants"
в корневой макет.
Ответ 3
На самом деле ничего не случилось. Что вы делаете, все в порядке. Но я думаю, что вы забыли один ключевой фактор здесь ImageButton имеет собственный OnClickListener. Поэтому, когда вы вставляете свой ImageButton в строку списка ListView.OnItemClickListner не работает, потому что click/touch вызывается ImageButton, из-за этого ListView не получает ваше событие click/touch.
Проверьте эту ссылку: Как запустить onListItemClick в Listactivity с помощью кнопок в списке?
Ответ 4
Если вы используете пользовательский Listview
и в пользовательском Listview
, если только Textview
и Imageview
, вы должны удалить android:inputType=""
. Это вызывает проблему фокусируемости.
Ответ 5
Я предполагаю, что вы используете настраиваемый элемент списка. Просто попробуйте установить
установите focusable
"false" и focusableInTouchMode
"false" для всех представлений в вашем custom_list_view_item.xml
Не беспокойтесь о своей кнопке изображения, если вы используете кнопку прослушивания клипов для кнопки "Изображение" в адаптере, она также будет работать нормально. просто сделайте focusable
"false" и focusableInTouchMode
"false" для всех представлений в вашем custom_list_view_item.xml
Ответ 6
Возможно, вы написали onclick listener для кнопки изображения в классе адаптера
Пример:
imageButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
}
});
Если вы установите onclick listener для listItem. Он будет автоматически потреблять вход действия
поэтому элемент списка не может быть нажат.