1

我有带有自定义适配器的列表视图。在每一行中,我有 2 个文本视图和一个按钮。我希望当我单击一个项目时突出显示它并保持突出显示,直到我单击另一个项目。我试图用列表选择器来做,但没有成功。然后我试着这样做:

public void onClick(View v) {
    ListView lvItems = context.lvLists;
    for (int i=0; i < lvItems.getChildCount(); i++) 
    {
        lvItems.getChildAt(i).setBackgroundColor(Color.BLACK);        
    }
    v.setBackgroundColor(Color.parseColor("#555555"));

这是列表视图每一行的onclick。它有效,但我看到当我向下滚动时,选择了更多项目(我没有选择)。解决方案?

4

3 回答 3

1

如果要保存 ListView 项的某些属性,则不能依赖视图本身。您必须将它们存储在您的数据中,以便您的适配器知道哪个项目的状态已更改。有关详细信息,请参阅此问题的答案:

Android:当我动态添加新的 ListView 条目时,ListView 中的微调器会丢失它们的值

于 2012-10-25T13:05:24.180 回答
0

您应该实现视图持有者模式,然后在持有者代码中,您可以有一个(布尔)变量来保存该项目的当前状态(突出显示或未突出显示),相应地更改背景颜色。

于 2012-10-25T13:05:02.673 回答
0

您在 Stack Overflow 上有很多答案。试着检查一下这个这个还有这个

于 2012-10-25T13:07:38.660 回答