使用适配器用 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;
}
}
我正在为作业编写小游戏应用程序,例如 "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;
}
}