2

我试过的


大家好,我已经制作了一个 GridView,我已经填写了我的数据库。现在我从 Google GridView 教程中制作了一个 onItemClickListner。现在我试图让当用户单击 GridView 中的图片时,它保持选中状态并获取背景颜色,以便用户看到他选择的图像。但这确实不能正常工作。我用一个布尔值创建了一个 If ,当用户单击下一个视图时,它总是使旧视图再次变得透明,而新单击的视图得到背景色。但是在我选择了一个视图并上下滚动之后。突出显示的视图有时会随机更改。

问题


所以我的问题是我必须在 onItemClickListner 中更改什么,这个随机视图更改停止(?),我没有找到这样做的方法。有没有更简单的方法来突出显示选定的视图?为了理解“选定的视图”=用户点击它,而不是它的选定,应该突出显示。

代码


这是我的 onItemClickListner 的代码:

    //Hier wird die Grindview gefüllt
    final GridView gridview = (GridView) findViewById(R.id.SmileyGrind);
    gridview.setAdapter(new ImageAdapter(this, info));


    //Hier wird gemerkt welches bild
    gridview.setOnItemClickListener(new OnItemClickListener() {

boolean color = false;
View vv;


        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(SFilterConfigActivity.this, "" + position, Toast.LENGTH_SHORT).show();
           // gridview.setSelection(position);

            if ( color == false){
                v.setBackgroundColor(0xFF00FF00);
                vv = v;
                color = true;

            }
            else {
                vv.setBackgroundColor(0x00000000);
                v.setBackgroundColor(0xFF00FF00);
                vv = v;


            }


        }      
    });

谢谢你提前帮助!

4

1 回答 1

4

我有同样的问题,但它与 ListView .follow this 它也适用于 GridView 。

if(position == grid.getSelectedItemPosition())
   holder._linear.setBackgroundColor(Color.GRAY);           
else  
   holder._linear.setBackgroundColor(Color.BLACK);

并获取您用于 GridView 的布局的父布局,并在布局的 onClick 方法上添加这个。

 holder._linear.setBackgroundColor(Color.GRAY); 

这将改变布局的背景颜色,上面的代码将解决你的随机背景问题。

于 2011-10-06T06:57:39.627 回答