【问题标题】:ListView Selected Rows Colors DisappearingListView 选定的行颜色消失
【发布时间】:2011-03-17 14:13:21
【问题描述】:

我有一个自定义 ListView 活动,它为列表中的所有项目维护一个状态数组(3 个选项,默认 = 黑色,单击一次=绿色,第二次单击=红色)。列表项/行的颜色会根据用户选择而变化,因此我可以使用该项的颜色来进行以后的数据标注。现在一切正常,直到我将选定的项目从屏幕上滚动出来并将它们返回到活动视图,当它们的自定义颜色消失时。状态数组仍然包含所有正确的信息,自定义颜色只是消失了。我在 ListView 上使用 OnItemClickListener 来处理单击项目时的颜色变化,但我猜这不是最好的方法。处理这个问题的最佳方法是什么?

编辑:为了清楚起见,我允许选择具有多种颜色的多行。

提前致谢。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    这可能是因为您有一个正在为您创建行视图的适配器。为了更高效,适配器将重用屏幕上不再可见的行视图。这减少了必须保存在内存中的视图数量。为了通过将颜色从屏幕上滚动来使颜色保持不变,您必须找到某种方法来存储每个项目应该使用的颜色,然后让适配器在构建视图时检查每个项目并相应地设置颜色.

    【讨论】:

    • 尝试扩展您的适配器类,覆盖getView 方法并手动设置每一行的颜色。 developer.android.com/reference/android/widget/…
    • 这基本上就是我接下来一直在尝试的,每次点击列表视图时手动更新状态数组,然后在Adapter的getView()方法中,设置合适的背景颜色。我想我希望有一个更优雅的解决方案,但我会看看它是否有效。编辑:抱歉,Max,没有看到您的评论。是的,我想这就是要走的路。
    • 搞定了,谢谢大家的帮助。如果有人有更优雅的解决方案,请随时发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多