我有一个listview,可以自定义显示图像和2个textview。我只是想突出我列表中的一个项目。
首先,我使用listview的setSelection方法,我终于发现它不是因为它不能在触摸模式下工作。
所以,我做了一些搜索,发现我需要使用setItemChecked方法。因此,我制作了一个状态列表颜色。
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@color/checkbox_bg_fcs" />
<item android:drawable="@color/WHITE" />
</selector>
我用它来设置自定义列表项的背景颜色。
从List活动中,我将setItemChecked(position,true)调用到listview的特定索引。
不幸的是,它似乎对我不起作用。有什么遗漏?有人有运气吗?
注意**,我确实从网络中检索了列表视图的数据。我在listview中有数据后才进行setItemChecked 我的列表视图也处于单选模式。
答案 0 :(得分:8)
我担心在Android框架中执行此操作并非易事。
为了使setSelection(...)正常工作,您的View必须实现follogin界面:android.widget.Checkable
您可能正在使用View的某些布局(可能是LinearLayout中的图像和2文本视图?),但它没有实现Checkable接口。
您可以做的是创建一个实现Checkable的自定义View类。
查看以下链接,了解可检查的LinearLayout:
http://tokudu.com/2010/android-checkable-linear-layout/
如果要更改背景,请重写setChecked方法以执行所需操作。 非常简单的例子:
@Override
public void setChecked(boolean checked) {
if (checked) {
this.setBackgroundColor(Color.RED);
} else {
setBackgroundColor(Color.BLACK);
}
}
答案 1 :(得分:8)
为列表行背景选择器设置,该选择器具有state_activated的资源:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:state_enabled="true" android:drawable="@android:color/black"></item>
<item android:drawable="@android:color/transparent" android:state_enabled="true"/>
</selector>
答案 2 :(得分:1)
尝试同时包含android:state_enabled
属性。