如何重置GridView中的所有ImageView背景?

时间:2013-01-26 17:06:50

标签: android gridview

在我的应用程序中,我使用带有几个随机放置的ImageView的GridView。用户应选择图像。为了标记所选的一个,我使用setBackgroundColor()作为视图。我的问题是,如果用户现在想要选择另一个图像,必须重置(或设置为白色)先前所选图像(或网格中的所有图像)的背景。知道怎么做吗?

或者,是否有另一种可能性来实现它,以便网格中的选定图像将被突出显示?

编辑:感谢您提供评论中的所有提示。解决方案如下。

2 个答案:

答案 0 :(得分:1)

再次设置适配器

 @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_layout);

        Context context = this;

        gridView = (GridView) findViewById(R.id.grid_view);

        gridView.setAdapter(new ImageAdapter(this));

        gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View v,
                    int position, long id) {
            gridView.setAdapter(new ImageAdapter(context));
            v.setBackgroundColor(Color.CYAN);
            }
        });
    }

答案 1 :(得分:0)

好的,我检查的一个可能的工作解决方案(Rachel Gallen的链接之一)是使用

gridView.getChildAt(previous).setBackgroundColor(Color.WHITE); 

我使用的另一个解决方案是在静态变量中保存前一个视图的脏黑客:

...
View previousView = null;
...
 @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_layout);

        gridView = (GridView) findViewById(R.id.grid_view);

        gridView.setAdapter(new ImageAdapter(this));

        gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View v,
                    int position, long id) {

            if (previewView != null) {
                previewView.setBackgroundColor(BACKGROUNDCOLOR);
            }
            previewView = v;
            v.setBackgroundColor(HIGHLIGHTCOLOR);
            }
        });
    }