未选中时更改 GridView 项目背景
Change GridView Item BackGround when is Unchecked
我有一个 CustomAdapter
可以正常使用。
Adapter
将数据插入我的 Android GridView
。
现在我想要检查一个项目时Item
的BackGround
变为白色,而另一个项目为select ed时,先前select 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
有效,这意味着当我select一行时,颜色变为白色,但是当我select另一行时,前一个仍然是白色,新的 selected 也是白色的。
我应该在 else statement
中写什么?
每次按下 GridView
的任何项目时都需要调用 adapter.notifyDataSetChanged();
以刷新 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>
我有一个 CustomAdapter
可以正常使用。
Adapter
将数据插入我的 Android GridView
。
现在我想要检查一个项目时Item
的BackGround
变为白色,而另一个项目为select ed时,先前select 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
有效,这意味着当我select一行时,颜色变为白色,但是当我select另一行时,前一个仍然是白色,新的 selected 也是白色的。
我应该在 else statement
中写什么?
每次按下 GridView
的任何项目时都需要调用 adapter.notifyDataSetChanged();
以刷新 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>