使用 ImageLoader 在可折叠应用栏中通过 URL 加载图像

Load image via URL in collapsible app bar using ImageLoader

我正在尝试通过 ImageLoader class 将图像加载到可折叠的应用栏中。当我在其他 activities/fragments/recyclerview 上使用相同的代码时,它工作正常但在可折叠应用栏中失败。

这是我正在使用的代码:

                ImageLoader myLoader=new ImageLoader(getApplicationContext());
                myLoader.DisplayImage(flag,ivFlag);

我想可能是我没有提供正确的上下文。

我尝试通过这段代码手动加载图像,它运行良好:

ivFlag.setImageDrawable(getResources().getDrawable(R.drawable.india));

我使用 NetworkImageView 而不是简单的 ImageView,它的效果很好。我是这样做的:

private ImageLoader mImageLoader;    
NetworkImageView proficPic,ivFlag;

这就是我在 onCreate() 方法中使用它的方式。

mImageLoader = VolleySingleton.getInstance().getImageLoader();

                proficPic.setImageUrl(imageURL, mImageLoader);
                ivFlag.setImageUrl(flag, mImageLoader);

这是我的 VolleySingleton.java class

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;


import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import com.truelancer.app.ProfileDetail;


public class VolleySingleton {
    private static VolleySingleton mInstance = null;
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;


    private VolleySingleton(){
        mRequestQueue = Volley.newRequestQueue(ProfileDetail.getAppContext());
        mImageLoader = new ImageLoader(this.mRequestQueue, new ImageLoader.ImageCache() {
            private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10);
            public void putBitmap(String url, Bitmap bitmap) {
                mCache.put(url, bitmap);
            }
            public Bitmap getBitmap(String url) {
                return mCache.get(url);
            }
        });
    }


    public static VolleySingleton getInstance(){
        if(mInstance == null){
            mInstance = new VolleySingleton();
        }
        return mInstance;
    }


    public RequestQueue getRequestQueue(){
        return this.mRequestQueue;
    }

    public ImageLoader getImageLoader(){
        return this.mImageLoader;
    }


}

一个,可能效率不高,方法如下:

        ImageLoader imageLoader = ImageLoader.getInstance();
        imageLoader.loadImage(IMAGE_URI, new ImageLoadingListener() {
        @Override
        public void onLoadingStarted(String imageUri, View view) {

        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            // Sets the background drawable in callback
            BitmapDrawable drawable = new BitmapDrawable(loadedImage);
            collapsingToolbarLayout.setBackground(drawable);
        }

        @Override
        public void onLoadingCancelled(String imageUri, View view) {

        }
    });