setItemChecked(int position,boolean value)不起作用?

时间:2011-09-12 07:19:04

标签: android listview listitem

我有一个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 我的列表视图也处于单选模式。

3 个答案:

答案 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属性。

相关问题