我有一个CustomAdapter
工作正常。
Adapter
将数据插入我的Android GridView
。
现在我想要在检查项目时BackGround
的{{1}}变为白色,当选择其他项目时,之前选择的项目颜色变为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
写一下什么?
答案 0 :(得分:1)
每次按下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>