未选中时更改 GridView 项目背景

Change GridView Item BackGround when is Unchecked

我有一个 CustomAdapter 可以正常使用。 Adapter 将数据插入我的 Android GridView。 现在我想要检查一个项目时ItemBackGround变为白色,而另一个项目为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>