android 取消选择ListView中的选定项

wpcxdonn  于 2022-11-27  发布在  Android
关注(0)|答案(8)|浏览(194)

我在布局中使用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();
...

又做了一些事情,但是没有任何效果。有什么想法可以让我选择的项目恢复正常吗?不会那么复杂吧?

**编辑:**我需要一个编程解决方案!

lsmepo6l

lsmepo6l1#

clearChoices()之后调用ListView上的requestLayout()。它将工作。

iq0todco

iq0todco2#

正如上面提到的@Muerte,做以下事情对我很有效:

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

这似乎比重新绘制整个布局要好。

4dbbbstv

4dbbbstv3#

对我来说,它适用于:

listView.setAdapter(myAdapter);
omqzjyyz

omqzjyyz4#

在声明ListView的XML中用途:

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

rqcrx0a65#

您可以在单击后设置选择器:

<?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_白色是#00ffffff

jgovgodb

jgovgodb6#

试试这个
创建您自己的选择器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>

查看此链接
here

ztmd8pv5

ztmd8pv57#

没有一个解决方案对我有效。我的列表视图用于列出搜索到的项目,并提供了重做搜索的功能。在得到结果后,我添加了以下代码片段,它起作用了:)
设置选定索引(-1);

kyvafyod

kyvafyod8#

你的选择器资源似乎是错误的。你应该使用一个有透明背景的drawable,我认为这是你的行的实际颜色,而不是ListViewchoiceMode。请检查这另一个答案以获得更多细节。

相关问题