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. Он будет автоматически потреблять вход действия поэтому элемент списка не может быть нажат.