【发布时间】:2016-05-09 04:06:29
【问题描述】:
我有一个ListView,我希望单击的项目具有背景颜色以指示当前选择了哪个项目。
我通过指定选择器字段实现了这一点
<ListView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/sub_arguments_listView"
android:layout_weight="1"
android:listSelector="@drawable/list_selector"
android:choiceMode="singleChoice"
android:clickable="true"/>
而 list_selector.xml 是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/seperator_color" />
<item android:state_focused="true" android:drawable="@color/seperator_color" />
<item android:state_activated="true" android:drawable="@color/seperator_color" />
<item android:state_selected="true" android:drawable="@color/seperator_color" />
<item android:state_active="true" android:drawable="@color/seperator_color" />
<item android:drawable="@color/seperator_color" />
</selector>
我添加了ListView.onItemClickListener():
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
String text ="sometext";
((TextView)mMainView.findViewById(R.id.sub_argument_text)).setText(text);
}
只要变量“text”的内容很短,它就可以正常工作并且符合预期。
我遇到的问题是,当变量“text”的内容是长文本时,TextView 更新得很好,但ListView 中的选定项目由于某种原因(我的猜测是焦点丢失)。如果我再次单击同一个项目,则背景会保持不变,并且该项目仍然突出显示。
另请注意,我有两台 Android 设备:
- Marshmallow 5.0 是一个快速的设备。而且我没有看到这个问题。
- 第二个是 4.2 且速度相对较慢的设备,显示此问题。
我错过了什么?如何使 listView 中被点击的项目一直保持突出显示,直到另一个项目被点击?
谢谢
【问题讨论】:
-
使 Listview 可点击使适配器类中的项目 android:focusable="false" android:focusableInTouchMode="false" android:clickable="false"
-
好的。我删除了可点击属性,但仍然遇到同样的问题?
-
您不要从列表视图中删除可点击的内容。我说的是适配器类视图