如何在列表视图中设置项目的背景颜色

时间:2011-06-16 22:32:35

标签: java android listview

我有一个列表视图,其中包含多个包含多个小部件的项目,例如imageview和复选框。我有一个数组适配器和一个搜索功能的过滤器。我的问题是我想检查复选框并发生一些事情。我为测试做的是检查列表视图顶部项目中的复选框,并打印出其状态。我注意到这有效但当我向下滚动时,也选择了其他复选框。我做了一些研究,我意识到listview的一个特性是重用并进行了很好的优化,因此重复使用了复选框。我想知道是否有可能让我检查我的列表中的一个项目中的复选框,并让相应的项目变成一种颜色,而当我滚动时没有其他项目变成相同的颜色。

到目前为止,我已经在视图线性布局上尝试了setbackgroundcolor和setimagebitmap,两者都有上述结果。

谢谢

3 个答案:

答案 0 :(得分:1)

您真正想要的方法是更好地分离视图和数据代码。您应该在数据项上有一个反映在复选框和/或背景颜色中的字段。这意味着当您选中复选框时,不应直接更改背景颜色,而应更改基础数据项的值。此外,每次将数据项绑定到视图时,都应根据此字段值设置复选框。

答案 1 :(得分:0)

您需要的是将复选框状态存储在某种数组中。在其中保存位置和状态,然后在适配器中根据位置的数组项设置视图状态。

答案 2 :(得分:0)

如果您使用了适配器类。然后,您可以在getView括号中添加onItemClickListner。在适配器类中可用。并使用View对象和项目位置设置颜色。