如何在自定义列表中设置所选行的背景颜色?

时间:2012-07-23 13:10:31

标签: android

我正在尝试更改列表视图中所选行的背景颜色,我能够做到这一点。     但是当我点击另一行时,之前所选行的背景颜色保持不变。我有前面选择的行的位置,任何人都可以帮助我,如何改变之前选择的行的背景颜色?

3 个答案:

答案 0 :(得分:1)

如果您在模型中跟踪并更新listItems单击状态,您只需将用于显示has been clicked-color的代码放入适配器中,然后调用

adapter.notifyDatasetChanged();

答案 1 :(得分:1)

我认为如果你以另一种方式看待它可能会更容易。

目前,您的逻辑是“如果我点击此行,将其颜色更改为特殊颜色并将旧行的颜色更改回原始颜色”。但是,这似乎不是您实际想要的逻辑。相反,您希望最后单击(也称为选定)的行是不同的颜色。

您尚未发布任何代码,因此我不知道您是否在此项目中实现自己的ListAdapter。这就是我要采取的方法。创建一个扩展ListAdapter的类,并创建一个存储最后一个选定行位置的附加私有变量。然后在重写的getView()方法中,快速检查

if(rowPosition == lastSelectedRowPosition) 
   viewToReturn.setBackgroundColor();

如果您不确定如何制作自己的列表适配器,请查看http://jnastase.alner.net/archive/2010/12/19/custom-android-listadapter.aspx上的教程。

答案 2 :(得分:0)

在您的活动中使用Your_List对象的setOnItemClickListener。

参见演示代码:

list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
                v.setBackgroundColor(Color.BLUE); // <--- Use color you like here
            //  ^ this v gives current row. 
     }
});

这将使该行的背景颜色永久更改。