【问题标题】:Set selected View highlighted - random changing of the View while scrolling突出显示选定的视图 - 滚动时随机更改视图
【发布时间】:2011-10-06 06:39:50
【问题描述】:

我尝试了什么


大家好,我已经制作了一个 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;


            }


        }      
    });

感谢您提前提供帮助!

【问题讨论】:

    标签: android gridview view onitemclicklistener setbackground


    【解决方案1】:

    我遇到了同样的问题,但它与 ListView 相关。按照此操作,它也适用于 GridView。

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

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

     holder._linear.setBackgroundColor(Color.GRAY); 
    

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

    【讨论】:

    • 您好,谢谢您的快速回答,所以我将代码更改为此` if(position == gridview.getSelectedItemPosition()){ gridview.setBackgroundColor(0xFF00FF00); } 其他{ gridview.setBackgroundColor(0x00000000); }`但它不起作用,我仍然做错了什么?感谢您的帮助 (+1)!
    • 这段代码你应该写在 ImageAdapter 的 getView() 方法中,你是否在 GridView 的 OnClick 上实现了改变背景颜色。
    • 我真的不明白如何实现它。能否请您快速查看一下您的 ImageAdapter 和 ListView 文件。我真的很喜欢自己做这个..
    • 或者至少 holder._linear.part 在我的代码中应该怎么看,我不明白。
    • 您必须为您的 GridView 创建自定义布局 XML 并将其传递给您的适配器,就像我们为自定义 ListView 所做的那样。然后您必须在 XML 中获取父布局并更改其背景。
    猜你喜欢
    • 2012-06-10
    • 2015-03-19
    • 2018-03-14
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多