我有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设备:
我错过了什么?如何使listView中单击的项目始终保持高亮显示,直到单击另一个项目为止?
由于
答案 0 :(得分:2)
试试这个,
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
listView.setItemChecked(position, true);
}
这可能对你有所帮助。
答案 1 :(得分:1)
您可以尝试此示例...
Android ListView. How to change background color of manually selected item
也可以看到这个答案
Change background color of selected item on a ListView
在您的代码中
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
view.setSelected(true);
...
}
}