未选中时更改GridView项目BackGround

时间:2016-03-15 08:21:36

标签: android android-gridview

我有一个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写一下什么?

1 个答案:

答案 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>