2015-04-27 2 views
0

Я пытаюсь установить imageViews моего listView с помощью Asynctask.Установить изображениеПросмотреть корыто AsyncTask в listView

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

код ниже:

new CargarFotoSegundoPlano(imagenParcela).execute(Integer.parseInt(children.getIdContacto())); //this is the call to asynctask 

класс

public class CargarFotoSegundoPlano extends AsyncTask<Object, Void, Bitmap> 
{ 
    private final WeakReference<ImageView> imageViewReference; 
    ImageView imageView; 

    //String tag; 
    public CargarFotoSegundoPlano(ImageView imageView) 
    { 
     imageViewReference = new WeakReference<>(imageView); 
     this.imageView = imageView; 
     //this.tag = imageView.getTag().toString(); 
    } 

    @Override 
    protected Bitmap doInBackground(Object... params) 
    { 
     //imageView = (ImageView) params[0]; 
     Integer idLong = (Integer) params[0]; 
     return cargarFotoContacto(idLong); //this method return a bitmap 
    } 

    @Override 
    protected void onPostExecute(Bitmap bitmap) 
    { 
     if (isCancelled()) 
     { 
      bitmap = null; 
      // imageView.setImageBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher)); 
     } 
     if (imageViewReference != null) 
     { 
      ImageView imageView = imageViewReference.get(); 
      if (imageView != null) 
      { 
       if (bitmap != null) 
       { 
        Animation mover = AnimationUtils.loadAnimation(context, R.anim.difuminado_foto_mini); 
        imageView.startAnimation(mover); 
        imageView.setImageBitmap(bitmap); 
       } 
       else 
       { 
        Drawable placeholder = imageView.getContext().getResources().getDrawable(R.drawable.fastcontacts); 
        imageView.setImageDrawable(placeholder); 
       } 
      } 
     } 
     else 
     { 
      Drawable placeholder = imageView.getContext().getResources().getDrawable(R.drawable.fastcontacts); 
      imageView.setImageDrawable(placeholder); 
     } 
    } 
} 

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

Любая помощь будет приветствоваться.

С уважением!

ответ

1

Если вы начинаете приложение с нуля, я настоятельно рекомендую использовать некоторую созданную библиотеку для загрузки и кеширования изображений и т. Д. Некоторые из лучших доступных вариантов: Picasso (супер проста в использовании) и Universal Image Loader (бит сложнее но с большим количеством параметров конфигурации).

P.S. Я просто вспомнил, что говорит Борис Фарбер (разработчик Google Developer Advocate) об загрузке изображений - «Использовать библиотеки. Если вы делаете это сами с нуля, есть вероятность, что вы делаете что-то неправильно/неэффективно».

+0

Спасибо за ответ, но если я отправлю запрос здесь, потому что я не хочу использовать библиотеку. Это самый простой способ, и я ничего не узнаю, используя его. Читая ссылки на подобные вещи в Android-разработчиках, мой код пока не до конца. Я думаю, что что-то в методе onPostExecute все будет в порядке. Я продолжу сам. Спасибо в другой раз, теплый привет! – elgonspain

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