Android ListView选定行颜色消失

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

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

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


提前感谢。

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

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

尝试扩展适配器类,重写
getView
方法并手动设置每行的颜色。这基本上就是我接下来一直在尝试的,每次单击列表视图时手动更新状态数组,然后在适配器的getView()方法中,设置适当的背景颜色。我想我希望有一个更优雅的解决方案,但我会看看这是否有效。编辑:对不起,Max,没有看到你的评论。是的,我想这是正确的方法。这样就可以了,谢谢你们的帮助。如果有人有更优雅的解决方案,请随意发布。尝试扩展适配器类,重写
getView
方法并手动设置每行的颜色。这基本上就是我接下来一直在尝试的,每次单击列表视图时手动更新状态数组,然后在适配器的getView()方法中,设置适当的背景颜色。我想我希望有一个更优雅的解决方案,但我会看看这是否有效。编辑:对不起,Max,没有看到你的评论。是的,我想这是正确的方法。这样就可以了,谢谢你们的帮助。如果有人有更优雅的解决方案,请随意发布。