【问题标题】:ListView on Fragment片段上的 ListView
【发布时间】:2011-06-22 15:03:49
【问题描述】:

如何通过按下 ListView (onListItemClick) 的一行标记该行被选中(保持按下的颜色,默认为黄色)?

我不在 HoneyComb 上,我正在使用 android-support-v4.jar 一个 Android 兼容性 jar。

我想在 HoneyComb (http://www.youtube.com/watch?v=5swwUeZ0-ww) 上提供类似于 Gmail 的方面,即您知道选择了哪个项目,因为它保持蓝色。

我想我想做的是一个新的状态,叫做激活(在 HoneyComb 上),但是..我想用其他版本的兼容性 jar 来做。

顺便说一句,我正在使用 SimpleCursorAdapter 来填充 ListFragment

谢谢。

【问题讨论】:

    标签: android listview android-fragments


    【解决方案1】:

    我在列表的适配器类中实现了这一点。我在列表中有 2 种类型的行:一种用于正常的未选择行,另一种用于选定行。当用户选择一个列表项时,您通知适配器将该项设置为“已选择”,并调用 .notifyDatasetChanged()。在适配器的 .getView() 中,检查当前项是否被选中,并为该行填充相应的布局。

    它可能看起来更复杂,但它确实有效。这样,您也可以随时向适配器询问所选元素,而无需在您的活动中弄乱实例变量来存储此信息。我觉得这样更干净一些。

    【讨论】:

    • 好的,我设法实现了它。我在 Adapter 上添加了一个选定的 int,然后在充气时如果 index = selected setBackground color XPTO 则设置背景透明。 :-)
    • 这是无效的。为了刷新一个列表项的背景,您正在刷新整个可见列表。
    【解决方案2】:

    使用以下代码

    list.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
            view.setBackgroundColor(Color.WHITE);
        }
    });
    

    【讨论】:

    • 这段代码有问题,你可以选择多于1个项目...按几个不同的都变白..
    • 您显然必须添加代码才能将颜色更改回选择其他内容时的颜色...
    • 这意味着遍历所有元素?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2014-12-05
    • 2017-09-12
    相关资源
    最近更新 更多