Использование флажка с ложной фокусировкой, по-прежнему предотвращает клики по списку - PullRequest
4 голосов
/ 25 июня 2010

Здравствуйте, я уже много читал о проблемах CheckBox / ListView в Android. Итак, я пробовал несколько вопросов.

Для начала мой макет для строки выглядит следующим образом.

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <CheckBox 
            android:id="@+id/check" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:focusable="false"
            android:focusableInTouchMode="false" 
            android:text="" /> 
   </LinearLayout>

Итак, я попытался добавить это в свой ListActivity

 ListView listview = getListView();
 listview.setItemsCanFocus(false);

А затем попытался запустить его с точкой останова на onListItemClick, но пока не получилось (конечно же, запустить отладку).

Это мой onListItemClick, если вы хотите увидеть.

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

        // let's find the checkbox we're on.
        CheckBox targetCheckBox = (CheckBox) l.findViewById(R.id.check);

        // ok update the database with the new data. 
        mDbHelper.updateNote(id, !targetCheckBox.isChecked());

        // update the list now.
        showList();

    }

Если я затем поменяю флажок на CheckTextView, он сработает, однако я никогда не делал этого раньше, и я бы лучше выяснил, что именно здесь не так, когда другие люди решили это. Есть мысли?

1 Ответ

13 голосов
/ 28 июня 2010

Видимо мне не хватало

android:clickable="false"

под флажком в дополнение к

android:focusable="false"

Добавление обеих строк приводит к корректному срабатыванию onListItemClick.

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