Java Android universal music player在MediaItemViewHolder中添加专辑封面

Java Android universal music player在MediaItemViewHolder中添加专辑封面,java,android,android-imageview,android-bitmap,Java,Android,Android Imageview,Android Bitmap,不确定这里有多少人熟悉,但我对在文件中显示相册有意见 这是我修改后的基本结构: // 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

不确定这里有多少人熟悉,但我对在文件中显示相册有意见

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

// 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:一旦用户点击该项目播放歌曲

我真的不确定是什么原因导致专辑最初是空白的。看一下,我看不出任何关于OnClickListener的限制会导致这种情况

有没有解决此问题的建议?

缓存。getIconImage(url)
实际上不会获取url并将其存储在缓存中。它返回当前值或null。相反,您必须调用
AlbumArtCache\fetch(字符串url,FetchListener侦听器)

这方面的一个很好的原型是
FullScreenPlayerActivity\fetchImageAsync(MediaDescription)

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

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);
}

@nagesh susaria我试图在我的本地副本上尝试一下,但我得到了这样的结果:我尝试了不同的实现方法,但得到了相同的结果-我是遇到了错误(我有Android 5.1.1)还是这是一个PEBCAK问题,哈哈。你的onFetched(…)被调用了吗?您可以添加一个调试语句,看看它是否到达那里。我不知道在没有查看代码的情况下会出现什么问题。是的-我今天将对此进行调试-谢谢你的提示。@avluis你解决问题了吗?如果没有,请查看xml文件并删除图像的色调。@NageshSusarla请检查: