我有一个CustomAdapter
正常工作。Adapter
将数据插入我的Android GridView
中。
现在我想当一个项目被选中时,将BackGround
的Item
更改为白色,并且当另一个项目被选中时,先前选择的项目颜色将变为GridView
背景,我的意思是仅使用SingleChoiceMode
。
我写了这个:
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(gridView.isItemChecked(position)) {
view = gridView.getChildAt(position);
view.setBackgroundColor(Color.WHITE);
}else {
view = gridView.getChildAt(position);
view.setBackgroundColor(124333); //the color code is the background color of GridView
}
}
});
但是只有第一个
If
起作用,这意味着当我选择一行时,颜色变为白色,但是当我选择另一行时,前一行仍然是白色,而新选择的也是白色。我应该在
else statement
中写些什么? 最佳答案
每次按下adapter.notifyDataSetChanged();
的任何项目时,都需要呼叫GridView
刷新GridView
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.notifyDataSetChanged(); // call it here
if(gridView.isItemChecked(position)) {
view = gridView.getChildAt(position);
view.setBackgroundColor(Color.WHITE);
}else {
view = gridView.getChildAt(position);
view.setBackgroundColor(124333); //the color code is the background color of GridView
}
}
如果只想更改
GridView
中所选项目的颜色,则可以将android:listSelector
用于GridView
xml<GridView
...
android:listSelector="#ff0000" >
</GridView>