Android 奇怪的问题:Gallery小部件从不调用getView
我正在为一个示例应用程序开发一个媒体播放器。。。事情进展得很顺利。。。除了当我将AlbumAdapter添加到Gallery小部件时。。。它从不调用getView 对不对Android 奇怪的问题:Gallery小部件从不调用getView,android,Android,我正在为一个示例应用程序开发一个媒体播放器。。。事情进展得很顺利。。。除了当我将AlbumAdapter添加到Gallery小部件时。。。它从不调用getView 对不对 albumList = getAlbums(mCurrentArtist); // updateAlbumArt(); if (albumList.size() > 0) { Log.v("Log", "got here"); AlbumAdapter coverImage
albumList = getAlbums(mCurrentArtist);
// updateAlbumArt();
if (albumList.size() > 0) {
Log.v("Log", "got here");
AlbumAdapter coverImageAdapter = new AlbumAdapter();
Gallery gallery = (Gallery) player.findViewById(R.id.covers);
gallery.setSpacing(5);
gallery.setAdapter(coverImageAdapter);
Log.v("coverImageAdapter", "Count is: "+coverImageAdapter.getCount());
Log.v("Gallery", "Object: "+gallery.toString()+" Child count: "+gallery.getChildCount());
适配器中有13项。。。我查过了。从未调用过getView。。。我有一个从未被调用的日志项
这是我的适配器类
public class AlbumAdapter extends BaseAdapter {
class ViewHolder {
ImageView cover;
}
public int getCount() {
return coverImages.size();
}
public Object getItem(int position) {
return coverImages.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Album album;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3;
Log.v("Gallery", "Position : "+position);
if (convertView == null) {
convertView = inflater.inflate(R.layout.cover, null);
holder = new ViewHolder();
holder.cover = (ImageView) convertView
.findViewById(R.id.albumcover);
holder.cover
.setLayoutParams(new Gallery.LayoutParams(120, 170));
holder.cover.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (position > getCount()) {
Bitmap empty = BitmapFactory.decodeResource(getResources(),
R.drawable.empty, options);
Drawable cover = new BitmapDrawable(getResources(), empty);
cover.setDither(true);
holder.cover
.setLayoutParams(new Gallery.LayoutParams(120, 170));
holder.cover.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
holder.cover.setImageDrawable(cover);
Log.v("AlbumAdapter", "Adding cover to fill empty spot");
} else {
album = albumList.get(position);
if (album.cover == null) {
holder.cover
.setLayoutParams(new Gallery.LayoutParams(120, 170));
holder.cover.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
holder.cover.setImageDrawable(createReflectedResource(R.drawable.albumart_unknown, album, position));
BitmapDrawable drawable = (BitmapDrawable) holder.cover
.getDrawable();
drawable.setAntiAlias(true);
Log.v("AlbumAdapter", "Missing cover... adding default");
} else {
holder.cover.setLayoutParams(new Gallery.LayoutParams(120,
170));
holder.cover
.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
holder.cover
.setImageDrawable(coverImages.get(position));
BitmapDrawable drawable = (BitmapDrawable) holder.cover
.getDrawable();
drawable.setAntiAlias(true);
Log.v("AlbumAdapter", "adding artist cover...");
}
}
return convertView;
}
以下是日志:
08-02 01:10:46.821: VERBOSE/Album:(562): Adding Alice In Chains Alice In Chains
08-02 01:10:46.821:VERBOSE/专辑:(562):在黑链中加入爱丽丝让位于蓝色
08-02 01:10:46.821:详细/专辑:(562):添加Alter Bridge Blackbird
08-02 01:10:46.831:详细/相册:(562):将Alice添加到垃圾链中
08-02 01:10:46.831:VERBOSE/相册:(562):添加Alice In Chains Facelift
08-02 01:10:46.831:详细/专辑:(562):在苍蝇的罐子里加入爱丽丝
08-02 01:10:46.831:详细/相册:(562):添加August Burns Red Messenger
08-02 01:10:46.831:冗长/专辑:(562):在我弥留之际,我们之间又添上了一片海洋
08-02 01:10:46.831:详细/相册:(562):添加Alter Bridge一天剩余
08-02 01:10:46.842:详细/相册:(562):在SAP中添加Alice
08-02 01:10:46.852:详细/相册:(562):在我躺着的时候添加阴影是安全的
08-02 01:10:46.852:详细/专辑:(562):添加August Burns Red Thright Seeker
08-02 01:10:46.852:VERBOSE/相册:(562):将Alice添加到未拔出的链中
08-02 01:10:46.871:详细/日志(562):我到了
08-02 01:10:49.311:VERBOSE/coverImageAdapter(562):计数为:13
08-02 01:10:49.321:VERBOSE/Gallery(562):对象:android.widget。Gallery@439558c0子计数:0
08-02 01:10:49.571:INFO/ActivityManager(222):显示的activity com.androidworkz.andamp/.andamp:4062毫秒(总共4062毫秒)看起来您的库视图没有添加到窗口中,或者大小为0。请删除
getApplicationContext()
。这很少是正确的答案。无论您在上调用什么getApplicationContext()
,它都是一个上下文
,所以只需使用this
。我实际上已经完全删除了构造函数中的上下文参数。。。所以它只是一个扩展BaseAdapterIt的裸适配器类,它的大小为零。。。它被添加到窗口中,因为我可以在继承人查看器中看到它,但它没有子项。。。正如我所说,适配器包含26项(ImageView)。这很奇怪,因为我以前也有同样的代码。。。不知怎的,我错过了一些东西。