使用适配器用 ImageButtons 填充 GridView 不起作用

Filling GridView with ImageButtons using adapter doesn't work

我正在为作业编写小游戏应用程序,例如 "memory" 游戏。我想使用 GridView 并将 ImageButtons 放入其中以显示一张图像 9 次,并设置 onClickListener 以在每张图像下方显示随机数。我在布局中设置了 gridview,使用 id 访问它,设置适配器来填充它,但它不起作用,而且我没有收到任何错误。另外,我试图找出代码中的错误,但失败了。

问题是当我启动应用程序时,它是空白的,emlutaor 屏幕上没有任何内容。

求助。 这是我的适配器 class:

public class ImageButtonAdapter extends BaseAdapter {

ImageButton[] buttons;
public Context c;
public ImageButtonAdapter(Context c) {
    this.c = c;
    buttons = new ImageButton[9];
    for (int i=0;i<buttons.length;i++) {
        buttons[i] = new ImageButton(c);
        buttons[i].setImageResource(R.mipmap.gmicon);
        buttons[i].setLayoutParams(new GridView.LayoutParams(300,300));
        buttons[i].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Button btn = (Button)v;
                btn.setText("5");
            }
        });
    }
}


@Override
public int getCount() {
    return 0;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return null;
}
}

这是游戏活动:

public class GameActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_layout);
    GridView gv = (GridView)findViewById(R.id.grid);
    ImageButtonAdapter adapter = new ImageButtonAdapter(this);
    gv.setAdapter(adapter);
}
}

谁能帮我看看这是什么问题?谢谢

让你getCountreturnbuttons.length

@Override public int getCount()
  { 
    return buttons.length;
  }

对于要在 gridView 或 listView 中显示的每个项目,我们必须覆盖 getView() 方法。

参考这个 - https://developer.android.com/reference/android/widget/Adapter.html

 public class ImageButtonAdapter extends BaseAdapter {

   ImageButton[] buttons;
   public Context c;
   public ImageButtonAdapter(Context c) {
      this.c = c;
      buttons = new ImageButton[9];
  }


@Override
public int getCount() {
    return buttons.length;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    convertView = new ImageButton(c);
    buttons[position] = convertView;
    buttons[position].setImageResource(R.mipmap.gmicon);
    buttons[position].setLayoutParams(new GridView.LayoutParams(300,300));
    buttons[position].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Button btn = (Button)v;
            btn.setText(position + "");
        }
    });
    return convertView;
}

}