Android 奇怪的问题: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

我正在为一个示例应用程序开发一个媒体播放器。。。事情进展得很顺利。。。除了当我将AlbumAdapter添加到Gallery小部件时。。。它从不调用getView

对不对

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)。这很奇怪,因为我以前也有同样的代码。。。不知怎的,我错过了一些东西。