我正在编写小型游戏应用程序以进行分配,例如"记忆"游戏。我想使用GridView并在其中放置ImageButtons以显示一个图像9次,并设置onClickListener以在每个图像下方显示随机数。我在layout中设置gridview,使用id来访问它,设置适配器来填充它,但它不起作用,我没有得到任何错误。另外,我试图找出代码中的错误,但失败了。
问题是,当我启动应用时,它是空白的,在emlutaor屏幕上没有任何内容。
帮助。 这是我的适配器类:
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;
}
}
这是gameActivity:
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);
}
}
任何人都可以帮忙告诉我问题是什么?感谢。
答案 0 :(得分:0)
让getCount返回buttons.length
@Override public int getCount()
{
return buttons.length;
}
答案 1 :(得分:0)
我们必须orverride getView()方法对于要在gridView或listView中显示的每个项目。
参考这个 - 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;
}
}