2015-08-24 3 views
0

Я пытаюсь получить изображения для просмотра списка с помощью библиотеки Volley. Я создал простой HTTP-помощник со следующим методом.Android + Volley: как получить растровое изображение изображения с помощью ImageLoader?

/** 
    * Processing Image request and gets the image with given URL 
    */ 
    public Bitmap makeImageRequest(String url) { 
     ImageLoader il = new ImageLoader(queue, new BitmapLruCache()); 
     il.get(url, new ImageLoader.ImageListener() { 
      @Override 
      public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { 
       mBitmap = processImageResponse(response); 

      } 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(Constants.Global.ERROR, "Error: " + error.getMessage()); 
       mBitmap = null; 
      } 
     }); 
     return mBitmap; 
    } 

Но проблема в том, что:

new BitmapLruCache() 

Метод не распознается.

Так я пытался создать ImageLoader, используя следующий код, который я нашел на URL:

http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 

Но в Thos коде я не могу узнать, где получить

AppController 

Поскольку код метода запускается из пользовательского

public class HttpHelperClass 

И вызывается из деятельности с использованием:

// Try to load remote image from URL 
     Bitmap bm = http.makeImageRequest("http://camranger.com/wp-content/uploads/2014/10/Android-Icon.png"); 
     ImageView iv = (ImageView) findViewById(R.id.imageView); 
     iv.setImageBitmap(bm); 

Является ли это правильный подход, как загружать изображения и как я могу восстановить мой код, чтобы сделать succcessfull запрос?

Большое спасибо за любой совет.

ответ

2

Я думаю, что ваш метод makeImageRequest всегда будет возвращать null, потому что это занимает некоторое время для onResponse или onErrorResponse слушателей дозвонились, но вы возвращаете mBitmap immidately!

Если вы хотите использовать Volley's ImageLoader, вам лучше получить изображение внутри вашей деятельности или ... не из другого класса, такого как ваш HttpHelperClass.

Также AppController является класс, охватывающий Application и , что вы должны создать сам. (Это в вашей AndroidHive ссылки. Раздел 3. Создание Volley Singleton класса)

, а также для кэширования изображений, которые вы не должны создавать новую ImageLoader каждый раз, потому что в этом случае кэширование получает бессмысленно. Вы должны получить это из своего класса AppController.

Кроме того, я предлагаю вам с помощью Picasso, потому что это намного лучше, что Volley в загрузке изображений и намного проще! С Picasso вам нужно только позвонить в следующую строку, чтобы загрузить изображение из Интернета в ImageView:

Picasso.with(context).load(urlString).to(imageView);

Смежные вопросы