Android万能音乐播放器在MediaItemViewHolder中添加专辑封面

Android universal music player add album cover in the MediaItemViewHolder

不确定这里有多少人熟悉 Android Universal Music Player but I am having issue with displaying an album in the MediaItemViewHolder.java 文件。

所以这是我修改后的基本结构:

// image view for the album cover
holder.mImageView = (ImageView) convertView.findViewById(R.id.play_eq);

// get the album art url
String artUrl = description.getIconUri().toString();
Bitmap art;
AlbumArtCache cache = AlbumArtCache.getInstance();
art = cache.getIconImage(artUrl);
....
if (cachedState == null || cachedState != state) {
    switch (state) {
    case STATE_PLAYABLE:
         // display the album cover
         holder.mImageView.setImageBitmap(art);
         break;
....

这样可以正确显示专辑封面。但是,它最初是空白的。一旦用户单击某个项目,就会显示图像。

屏幕截图 #1:加载应用程序且用户未单击任何项​​目后:

屏幕截图 #2:一旦用户点击项目播放歌曲

我不太确定是什么原因导致相册最初是空白的。查看 AlbumArtCache.java 我看不到任何可能导致此问题的关于 OnClickListener 的限制。

有什么解决这个问题的建议吗?

cache.getIconImage(url) 实际上并没有获取 url 并将其存储在缓存中。它 returns 当前值或 null。相反,您必须致电 AlbumArtCache#fetch(String url, FetchListener listener)

FullScreenPlayerActivity#fetchImageAsync(MediaDescription description)

中有一个很好的原型

以下是项目可播放时您可以在方法中执行的操作。

AlbumArtCache cache = AlbumArtCache.getInstance();
Bitmap art = cache.getIconImage(url);
if (art == null) {
  cache.fetch(url, new AlbumArtCache.FetchListener() {
            @Override
            public void onFetched(String artUrl, Bitmap bitmap, Bitmap icon) {
                if (artUrl.equals(url)) {
                    holder.mImageView.setImageBitmap(icon);
                }
            }
        });
} else {
    holder.mImageView.setImageBitmap(bitmap);
}