Android GridView第一项不工作
我有一个按钮的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
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))当