Отменить выбор выбранного элемента в ListView - программирование
Подтвердить что ты не робот

Отменить выбор выбранного элемента в ListView

Я использую 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();
...

и еще несколько вещей, но ничего не работает. Любые идеи, как я могу вернуть свой выбранный элемент в норму? Не может быть так сложно, правда?

Изменить: Мне нужно программное решение!

Спасибо!

4b9b3361

Ответ 1

Вызовите requestLayout() на ListView после clearChoices(). Он будет работать.

Ответ 2

Как упоминалось выше @Muerte, для меня работало следующее:

myListView.clearChoices();
myAdapter.notifyDataSetChanged();

Кажется, что это лучше, чем перерисовать весь макет.

Ответ 3

Для меня это сработало с:

listView.setAdapter(myAdapter);

Ответ 4

В вашем XML, где вы объявляете ListView, используйте:

<ListView android:id="@+id/my_list" android:listSelector="#00000000" />

Ответ 5

Вы можете установить селектор после щелчка:

<?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

Ответ 6

попробуйте это

Создайте свой собственный 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>

проверить эту ссылку

здесь

Ответ 7

Ничто из решений на самом деле не работало для меня. Мой список предназначен для перечисления найденных элементов и имеет условие для повторного поиска. При получении результата я добавил следующий фрагмент кода, и он работал:)

myAdapter.setSelectedIndex(-1);

Ответ 8

Ваш ресурс селектора, кажется, здесь не так. Вы должны использовать drawable с прозрачным фоном, и я думаю, что это то, что на самом деле раскрашивает ваши строки, но не choiceMode для ListView. Пожалуйста, проверьте этот другой ответ для более подробной информации.