2015-09-01 3 views
0

Я загружаю изображения с Parse.com в свой список, все работает нормально, но проблема в том, что изображения постоянно перезагружаются, когда я просматриваю список. Я кеширую изображения в памяти, но мигание перед загрузкой каждого изображения, каждый раз раздражает.Загрузка изображений Android в ListView

Я загрузка моих изображений с асинхронной задачей, вот код:

private class loadContent extends AsyncTask<Void, Void, Void>{ 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      query = new ParseQuery<ParseObject>("Images"); 
      query.orderByDescending("createdAt"); 
      query.setLimit(limit); 
      ob = query.find(); 
      for(ParseObject num : ob){ 
       ParseFile img = (ParseFile)num.get("img"); 
       PostRow test1 = new PostRow(img.getUrl().toString(), (String) num.get("username")); 
       postList.add(test1); 
      } 
      //loadDataFromAdapter(); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     adapter.notifyDataSetChanged(); 
    } 
} 

Что я могу сделать, чтобы, например 10 изображений, загруженных в ListView в одно времени?

+0

Как вы загружаете/начинать список? внутри onCreate? – George

+0

Список инициализируется в методе OnCreate, а изображения загружаются в класс lloadContent в приведенном выше коде. И все работает отлично, за исключением того, что listview перезагружает мои объекты все время, когда я просматриваю. – user3330053

ответ

1

Вы должны изучить библиотеку Picasso. На своем сайте:

  • Он обрабатывает утилиту ImageView и отменяет загрузку в адаптере.
  • Комплексные преобразования изображений с минимальным использованием памяти.
  • Автоматическая память и кэширование диска.

Он широко используется для загрузки изображений и очень прост в использовании.

Надеюсь, что это поможет!

+0

Благодарим вас за ответ, но я уже использую другую библиотеку Universal Image Loader. Тем не менее, несколько минут назад я смог исправить эту проблему. Проблема заключалась в том, что я оставил слишком litle ram для кеша, я изменил это сейчас, поэтому все работает отлично. – user3330053

+0

Рад слышать, что вы смогли исправить свою проблему – morenoadan22

0

Для всех, кто пользуется универсальным загрузчиком изображений, проблема была в моей конфигурации, у меня было слишком мало бара для кеширования. Теперь я изменил это, и все работает отлично.

.memoryCache(new LruMemoryCache(50 * 1024 * 1024)) 
      .memoryCacheSize(50 * 1024 * 1024) 
1

Как цит предполагает, используя Picasso бы умнее подход.

Но все же вам нужно использовать выталкиваемый как заполнитель, чтобы предотвратить это «раздражающее мигание».

ParseFile img = (ParseFile)num.get("img"); 
String urlImage = img.getUrl().toString(); 
Picasso.with(context).load(urlImage).fit().centerCrop().placeholder(R.drawable.white_placeholder).into(imageview); 
Смежные вопросы