Пользовательский щелчок по элементу списка не вызывает listview.onclicklistener

Мой первый вопрос здесь. Пожалуйста, успокойся на мне.

у меня есть ListView с onItemClickListener реализованы.

У меня также есть пользовательский список элементов Android, состоящий из RelativeLayout с двумя перекрывающимися детьми (LinearLayout).

Когда я нажимаю на ListItem, он не вызывает ListView.onClickListrener код. Это происходит только в том случае, если пользовательский listItem имеет 2 перекрывающихся дочерних элемента. Если есть только один, все идет хорошо.

Почему это происходит? Заранее большое спасибо, это сводит меня с ума.

custom_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
>

<LinearLayout
    android:id="@+id/layout_one"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

...

</LinearLayout>

<LinearLayout
    android:id="@+id/layout_two"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

 <Button ...>

</LinearLayout>

</RelativeLayout>

В MainActivity.java:

mMainListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{   

...//code reachable only when customListItem has only one child

});

Я нашел свою проблему

Проблема заключалась в том, что в пользовательском представлении listItem я добавил кнопку Button, которая сфокусировалась на элементе listItem.

Извините за неоднозначный вопрос.

1 ответ

Решение

Даже с интерактивными виджетами в вашем пользовательском элементе списка, вы все равно сможете правильно запускать onItemClick слушатель по настройке

android:focusable="false"
android:focusableInTouchMode="false"

на всех ваших интерактивных виджетах (например, кнопки, флажки). По некоторым причинам, это не похоже на работу с ImageButton хоть.

Если это все еще не работает, рассмотрите возможность добавления прослушивателя к одному или обоим из LinearLayouts при создании элементов списка в вашем адаптере.

Другие вопросы по тегам