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

发布于 2024-12-03 20:16:52 字数 698 浏览 0 评论 0原文

我有一个自定义的列表视图,用于显示图像和 2 个文本视图。我只是想突出显示我的列表中的一项。

首先,我使用 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>

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

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

不幸的是,它似乎对我不起作用。有什么遗漏吗?有人有幸得到它吗?

注意**,我确实从网络检索了列表视图的数据。我仅在列表视图中有数据后才执行 setItemChecked。
我的列表视图也处于单选模式。

I have a listview which is customized to display an image and 2 textview. I just simply wanted to highlight one of the item from my list.

Firstly, I go with setSelection method of listview which i finally found out it is not the way as it is not working in touch mode.

So, I do some searching and found that I'd need to use setItemChecked method. Thus, I make a state-list color.

<?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>

I used it to set background color of my customized list item.

From List activity, I call setItemChecked(position,true) to a specific index of my listview.

Unfortunately, it doesn't seem to work for me. Is there anything missing? Anyone got luck with it?

Note**, I did retrieve data for list view from network. I do setItemChecked only after i have data in my listview.
My listview is in single choice mode too.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤独岁月 2024-12-10 20:16:52

恐怕在 Android 框架中做到这一点并不容易。

为了让 setSelection(...) 工作,您的视图必须实现以下接口: 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);
    }
}

I'm afraid that it is no easy way to do that in the Android Framework.

In order to get the setSelection(...) working, your View has to implement the follogin interface: android.widget.Checkable

You probably are using a some layout for View (an image and 2 textview in a LinearLayout maybe?), which doesn't implement the Checkable interface.

What you can do, is to create a custom View class which implements Checkable.

Check out the link below for a checkable LinearLayout:

http://tokudu.com/2010/android-checkable-linear-layout/


If you want to change the background, than rewrite the setChecked method to do what you want.
Very simple example:

@Override
public void setChecked(boolean checked) {
    if (checked) {
        this.setBackgroundColor(Color.RED);
    } else {
        setBackgroundColor(Color.BLACK);
    }
}
酷到爆炸 2024-12-10 20:16:52

为列表行背景选择器设置,其中包含 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>

set for your list row background selector, which has resource for 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>
油饼 2024-12-10 20:16:52

尝试也包含 android:state_enabled 属性。

try including the android:state_enabled attribute as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文