2016-03-28 4 views

答えて

2

誰かがそれが役に立つと思うかどうかは分かりませんが、念のためです。

私の要件は、ビットマップが必要なカスタムイメージビューにイメージをロードする必要があるということでした。

シングルトンクラスを使用しました。主な活動で今

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 developer docs

関連する問題