setItemChecked (int position, boolean value) не работает? - PullRequest
7 голосов
/ 12 сентября 2011

У меня есть просмотр списка, который настроен для отображения изображения и 2 просмотра текста.Я просто хотел выделить один из пунктов в моем списке.

Во-первых, я иду с методом setSelection списка, который я наконец-то обнаружил, что это не так, поскольку он не работает в сенсорном режиме.

Итак, я провел поиск и обнаружил, что мне нужно использовать метод setItemChecked.Таким образом, я делаю цвет списка состояний.

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@color/checkbox_bg_fcs" />
    <item android:drawable="@color/WHITE" />
</selector>

Я использовал его, чтобы установить цвет фона моего настраиваемого элемента списка.

Из действия List я вызываю setItemChecked (position, true) для определенного индекса моего списка.

К сожалению, у меня это не работает.Чего-то не хватает?Кому-нибудь повезло с этим?

Примечание **, я получил данные для просмотра списка из сети.Я делаю setItemChecked только после того, как у меня есть данные в моем списке просмотра.
Мой список просмотра также находится в режиме с одним выбором.

Ответы [ 3 ]

8 голосов
/ 12 сентября 2011

Боюсь, что это нелегко сделать в Android Framework.

Чтобы заставить работать setSelection (...), ваш View должен реализовать интерфейс follogin: android.widget.Checkable

Возможно, вы используете какой-то макет для просмотра (возможно, изображение и два текстовых представления в LinearLayout?), Который не реализует интерфейс Checkable.

Что вы можете сделать, это создать собственный класс View, который реализует Checkable.

Проверьте ссылку ниже для проверяемой LinearLayout:

http://tokudu.com/2010/android-checkable-linear-layout/


Если вы хотите изменить фон, то перепишите метод setChecked, чтобы сделать то, что вы хотите.Очень простой пример:

@Override
public void setChecked(boolean checked) {
    if (checked) {
        this.setBackgroundColor(Color.RED);
    } else {
        setBackgroundColor(Color.BLACK);
    }
}
8 голосов
/ 21 января 2014

установлен для вашего селектора фона строки списка, который имеет ресурс для state_activation:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_activated="true" android:state_enabled="true" android:drawable="@android:color/black"></item>
    <item android:drawable="@android:color/transparent" android:state_enabled="true"/>

</selector>
1 голос
/ 12 сентября 2011

попробуйте включить атрибут android:state_enabled.

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