ListView не кликабелен, все виджеты в строках являются TextView - PullRequest
2 голосов
/ 11 июля 2011

У меня есть простая модель строки и ListView во фрагменте;ListView заполняется должным образом, со всеми правильными размерами, цветами и т. д. Проблема в том, что нажатие на строку не вызывает событие.

Код в моем фрагменте:

MyAdapter mAdapter = new MyAdapter(getActivity().getApplicationContext(), R.layout.list_row, strings);
mList.setAdapter(mAdapter);

mList.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Log.d("LIST", "Selected item # " + position);
    }
}); 

макет фрагмента (фрагмент):

<ListView
    android:id="@+id/m_list"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:layout_margin="20dp"
    android:clickable="true"
    android:longClickable="true">
</ListView>

Макет строки:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="match_parent">

    <TextView
        android:id="@+id/txt_surname"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:text="@string/surname"
        style="@style/ListStyleXLarge"/>

    <!-- 4 more TextView just as the first one -->
</LinearLayout>

Стиль просто:

    <style name="ListStyleXLarge">
    <item name="android:textSize">
        @dimen/text_size_large
    </item>
    <item name="android:textStyle">
        bold
    </item>
    <item name="android:textColor">
        @color/list_item_text_color
    </item>
</style>

Что можно исправитьЭта проблема?Я уже пытался установить

android:clickable="false"
android:focuseable="false"
android:focuseableInTouchMode="false"

для всех TextViews, но пока ничего.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2012

В вашем классе MyAdapter:

В методе getView используйте:

convertView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Log.d("LIST", "Selected item # " + position);

            }
        });
0 голосов
/ 25 июля 2015

В вашем list_item xml поместите android: DesndantFocusability = "blocksDescendants" в LinearLayout или RelativeLayout, которые у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...