Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android GridView第一项不工作_Android_Gridview - Fatal编程技术网

Android GridView第一项不工作

Android GridView第一项不工作,android,gridview,Android,Gridview,我有一个按钮的GridView,我需要更改背景并单击一些按钮,它适用于所有按钮,但不是第一个: public View getView(int position, View convertView, ViewGroup parent ) { Button btn; if (convertView == null) { btn = new Button(mContext); btn.setLayoutParams

我有一个按钮的GridView,我需要更改背景并单击一些按钮,它适用于所有按钮,但不是第一个:

public View getView(int position, View convertView, ViewGroup parent ) {
        Button btn;

        if (convertView == null) {

            btn = new Button(mContext);

            btn.setLayoutParams(new GridView.LayoutParams(44,44));
            btn.setPadding(0,0,0,0);
            }
        else {
            btn = (Button) convertView;
        }



    btn.setId(position);
    bottoni[position] = btn;  
    //abilito o disabilito caselle
    if (mossa == 1){
            btn.setBackgroundColor(Color.parseColor("#C85A17"));
            btn.setClickable(true);
    }
    else {  
    if (statobtn[position] == "A") {
        btn.setBackground(getResources().getDrawable(R.drawable.semi));
        btn.setClickable(true); }
    if (testobtn[position] != "") {
        btn.setBackground(getResources().getDrawable(R.drawable.fiorebianco));
        btn.setClickable(false);    }
    }


    btn.setOnClickListener(new MyOnClickListener(position,btn));  


     return btn; 
    }
有什么想法吗


我先启用100个按钮,然后我只需要启用与单击的按钮相关的一些按钮,但第一个按钮始终处于启用状态…

我遇到了完全相同的问题,并通过删除/修改GridView.LayoutParams修复了它

请尝试注释以下代码:

btn.setLayoutParams(new GridView.LayoutParams(44,44));

GridView可能会为位置0调用getView,因此它会为位置0调用许多按钮。但是,最后一个可能不是屏幕上的那个,因此您可能更改了错误的按钮

如何解决


您可以为每个按钮提供标记,然后通过GridView.findViewByTag()在屏幕上找到正确的按钮。

当我将视图保留在视图保持架中时,我也会遇到同样的问题。 为了解决这个问题,我尝试在position=0的情况下创建一个新视图,它可以工作

在代码中,更改

if(convertView==null)


如果(convertView==null | | position==0){

我们能看到
getView
的其余部分吗?谢谢你的回答。它为我提供了解决不同问题的线索。我遇到了同样的问题。我该如何保留注释“btn.setLayoutParams(new GridView.LayoutParams(44,44))当