Ответ 1
Вызовите requestLayout()
на ListView
после clearChoices()
. Он будет работать.
Я использую ListView
в своем макете, например:
<ListView android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_gravity="center"
android:layout_height="match_parent"
android:layout_weight="0.7"
android:layout_marginTop="5dp"
android:orientation="vertical"
android:layout_centerInParent="true"
android:divider="@color/dark_grey"
android:drawSelectorOnTop="false"
android:focusable="true"
android:layout_marginBottom="55dp"
android:cacheColorHint="#00000000"
android:listSelector="@color/light_grey"
android:dividerHeight="1px" />
Селектор отлично работает, но как отключить селектор?
Я пробовал:
listView.clearChoices();
listView.setSelected();
listView.setSelector();
...
и еще несколько вещей, но ничего не работает. Любые идеи, как я могу вернуть свой выбранный элемент в норму? Не может быть так сложно, правда?
Изменить: Мне нужно программное решение!
Спасибо!
Вызовите requestLayout()
на ListView
после clearChoices()
. Он будет работать.
Как упоминалось выше @Muerte, для меня работало следующее:
myListView.clearChoices();
myAdapter.notifyDataSetChanged();
Кажется, что это лучше, чем перерисовать весь макет.
Для меня это сработало с:
listView.setAdapter(myAdapter);
В вашем XML, где вы объявляете ListView, используйте:
<ListView android:id="@+id/my_list" android:listSelector="#00000000" />
Вы можете установить селектор после щелчка:
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/transparent_white" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/transparent_white" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/transparent_white" android:state_focused="true"/>
<item android:drawable="@drawable/transparent_white" android:state_focused="false"/>
а @drawable/transparent_white - # 00ffffff
попробуйте это
Создайте свой собственный XML файл селектора, как этот
YourSelector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/item_disabled" />
<item android:state_pressed="true"
android:drawable="@drawable/item_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/item_focused" />
</selector>
проверить эту ссылку
Ничто из решений на самом деле не работало для меня. Мой список предназначен для перечисления найденных элементов и имеет условие для повторного поиска. При получении результата я добавил следующий фрагмент кода, и он работал:)
myAdapter.setSelectedIndex(-1);
Ваш ресурс селектора, кажется, здесь не так. Вы должны использовать drawable с прозрачным фоном, и я думаю, что это то, что на самом деле раскрашивает ваши строки, но не choiceMode
для ListView
. Пожалуйста, проверьте этот другой ответ для более подробной информации.