setItemChecked(int位置,布尔值)不工作?

我有一个自定义显示图像和2 textview的列表视图。 我只是想要突出显示从我的列表中的一个项目。

首先,我使用listview的setSelection方法,我终于发现它不是在触摸模式下工作的方式。

所以,我做了一些search,发现我需要使用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> 

我用它来设置我的自定义列表项目的背景颜色。

从列表活动,我调用setItemChecked(position,true)到我的列表视图的特定索引。

不幸的是,这似乎并没有为我工作。 有什么遗漏吗? 任何人都有幸运了?

注**,我没有从networking中检索列表视图的数据。 我只有在列表视图中有数据后才能执行setItemChecked。
我的listview也是单选模式。

恐怕在Android Framework中这样做并不容易。

为了得到setSelection(…)的工作,你的视图必须实现follogin接口: android.widget.Checkable

您可能正在使用View的一些布局(一个图像和一个LinearLayout中的2个textview可能?),它没有实现Checkable接口。

你可以做的是创build一个实现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); } } 

为你的列表设置行背景select器,它有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> 

尝试包括android:state_enabled属性。