我需要将我的GridView中的项目作为单独的对象,可以重新绘制自己,例如在下载他们所代表的游戏时显示进度条。所以我为View创建了一个包装器。
问题是网格项根本不显示。
为简单起见,我只在LibraryAlbumView
中添加了一个图像
如果我setBackgroundColor(0xFF00FF00);
我在网格单元格中看到了这个绿色背景,而不是其他任何东西。
在我的包装中:
public class LibraryAlbumView extends LinearLayout {
private Context context;
public LibraryAlbumView(Context context) {
super(context);
this.context = context;
ImageView image;
image = new ImageView(context);
image.setImageDrawable(context.getResources().getDrawable(
R.drawable.delete));
this.addView(image);
}
我的适配器代码是:
public class LibraryAlbumAdapter extends BaseAdapter {
private Context context;
public LibraryAlbumAdapter(Context context) {
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
gridItem = new LibraryAlbumView(context);
return gridItem;
} else {
return (LibraryAlbumView) convertView;
}
但是,如果我将包装器更改为LibraryAlbumView extends ImageView
并在其构造函数中我改为:
super(context);
this.context = context;
setImageDrawable(context.getResources().getDrawable(
R.drawable.delete));
我确实看到那里的图像
答案 0 :(得分:0)
看起来是因为你没有覆盖适配器中的其他重要方法,如getCount()
。由于Adapter
的默认实现返回零,因此GridView认为您没有要显示的项目。
除上述信息外,您似乎没有为LayoutParams
设置ImageView
,因此LinearLayout
不知道如何展示它并选择提供零宽度和高度,这可以解释为什么你看到绿色背景,没有别的。