Загружать изображение в пользовательский Imageview, а не в NetworkImageView при использовании залпа

Мне нужно загрузить изображение в Pinview вместо собственного NetworkImageView при использовании залпа для загрузки изображений с сервера.

Перерыл кучу статей и ничего не нашел. Есть ли способ сделать это?


person driftking9987    schedule 28.03.2016    source источник


Ответы (1)


Ну, я не знаю, найдет ли это кому-нибудь полезное, но на всякий случай.

Мое требование заключалось в том, что мне нужно было загрузить изображение в мое пользовательское изображение, для которого мне нужно было растровое изображение.

Я использовал класс Singleton.

public class MyVolleySingleton {

private static MyVolleySingleton mInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;

private MyVolleySingleton(Context context) {
    mCtx = context;
    mRequestQueue = getRequestQueue();
    mImageLoader = getImageLoaderRequest();
}
private ImageLoader getImageLoaderRequest() {
    return new ImageLoader(mRequestQueue,
            new ImageLoader.ImageCache() {
                private final LruCache<String, Bitmap>
                        cache = new LruCache<String, Bitmap>(20);
                @Override
                public Bitmap getBitmap(String url) {
                    return cache.get(url);
                }
                @Override
                public void putBitmap(String url, Bitmap bitmap) {
                    cache.put(url, bitmap);
                }
            }
    );
}

public static synchronized MyVolleySingleton getInstance(Context context) {
    if (mInstance == null) {
        mInstance = new MyVolleySingleton(context);
    }
    return mInstance;
}

public RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
        // getApplicationContext() is key, it keeps you from leaking the
        // Activity or BroadcastReceiver if someone passes one in.
        mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
    }
    return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req) {
    getRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
    return mImageLoader;
}

}

Теперь в основном действии я использовал функцию, в которой я передал URL-адрес изображения, которое необходимо загрузить.

    private void loadImage(String plan_url) {
        String url = plan_url;
        if (url.equals("")) {
            Toast.makeText(this, "<Error Message>", Toast.LENGTH_LONG).show();
            return;
        }

        // Retrieves an image specified by the URL, displays it in the UI.
        ImageRequest request = new ImageRequest(url,
                new Response.Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap bitmap) {
                        imageView.setImage(ImageSource.bitmap(bitmap));

                    }
                }, 0, 0, null,
                new Response.ErrorListener() {
                    public void onErrorResponse(VolleyError error) {
                        imageView.setImage(ImageSource.resource(R.drawable.demo1));
                    }
                });
// Access the RequestQueue through your singleton class.
        MyVolleySingelton.getInstance(this).addToRequestQueue(request);
    }

Документация для разработчиков Volley

person driftking9987    schedule 28.03.2016