我正在尝试更改列表视图中所选行的背景颜色,我能够做到这一点。 但是当我点击另一行时,之前所选行的背景颜色保持不变。我有前面选择的行的位置,任何人都可以帮助我,如何改变之前选择的行的背景颜色?
答案 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.
}
});
这将使该行的背景颜色永久更改。