我有一个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.
我的列表视图也是单选模式.
解决方法
我担心在Android框架中这样做并不容易.
为了使setSelection(…)正常工作,您的View必须实现follogin接口:android.widget.Checkable
您可能正在使用View的某些布局(可能是LinearLayout中的图像和2文本视图?),但它没有实现Checkable接口.
你可以做的是创建一个实现Checkable的自定义View类.
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); } }