Универсальный загрузчик изображений не работает на BaseAdapter

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

Он отлично работает, когда он используется на Activity но я не могу заставить его работать на Adapter

Он показывает изображение по умолчанию, но не отображает изображение из myUrl.

Здесь у вас есть мой код:

public class AdapatadorImagenesDetalle extends BaseAdapter {

private Context contexto;
private int position;
ImageView imageView;

public AdapatadorImagenesDetalle(Context c,int pos) {
    contexto = c;
    position = pos;
}

public int getCount() {
    return 4;
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int positionView, View convertView, ViewGroup parent) {

 imageView = new ImageView(contexto);
 ImageLoader.getInstance().displayImage(myUrl, imageView, new ImageLoadingListener() {
  @Override
  public void onLoadingStarted(String imageUri, View view) 
  {
      imageView.setImageResource(R.drawable.image);
  }
  @Override
  public void onLoadingFailed(String imageUri, View view, FailReason failReason) 
  {
     imageView.setImageResource(R.drawable.image);
  }
  @Override
  public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  }
  @Override
  public void onLoadingCancelled(String imageUri, View view) {
     imageView.setImageResource(R.drawable.image);
  }
  });

 return imageView;

}
}

Любая подсказка, почему это происходит?

заранее спасибо

РЕДАКТИРОВАТЬ: я пытаюсь показать эти изображения в эко-галерее

2 ответа

Попробуй это

@Override
public void onLoadingStarted(String imageUri, View view) {
    ((ImageView)view).setImageResource(R.drawable.image);
}

Также проверьте это:

@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
}

Похоже, вы не реализовали этот метод. Может быть, вам нужно это:

@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
    ((ImageView)view.setImageBitmap(loadedImage))
}

Я создал статический метод в классе с именем "TratarImagenes" на испанском языке для "ProcessImages", а затем переопределил методы UIL. Этот метод также рассчитывает время в миллисекундах процесса загрузки, так что вы можете использовать его для тестирования предложений.

 public class TrataImagenes {

    public static ImageLoader imageLoader;


    /**
     * Este método carga una imagen desde una URL o url local, y si falla, muestra la imagen
     * pasada como ID resource imgenFalloDireccionRDrawable.
     *
     * @param urlDeLaImagen                url de la imagen a cargar
     * @param imageView                    ImageView donde se carga la imagen
     * @param imgenFalloDireccionRDrawable dirección del drawable a cargar si falla
     * @return
     */
    public static boolean cargarImagenConUIL(
            String urlDeLaImagen, final ImageView imageView, final int imgenFalloDireccionRDrawable) {
        final boolean[] funciona = {false};
        imageLoader = ImageLoader.getInstance();
        final long[] antesTiempo = {0};
        imageLoader.displayImage(
                urlDeLaImagen, imageView, new ImageLoadingListener() {
                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                        antesTiempo[0] = System.currentTimeMillis();
                        view.setVisibility(View.INVISIBLE);

                    }

                    @Override
                    public void onLoadingFailed(
                            String imageUri, View view, FailReason failReason) {
                        funciona[0] = false;
                        Log.e("Universal Image Loading:", "falló la carga");
                        ((ImageView) view).setImageResource(imgenFalloDireccionRDrawable);
                        view.setVisibility(View.VISIBLE);

                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                        funciona[0] = true;
                        view.setVisibility(View.VISIBLE);
                Log.i("Universal Image Loading", "OK" + "en" + " "+ String.valueOf(System.currentTimeMillis()-antesTiempo[0]));

                    }

                    @Override
                    public void onLoadingCancelled(String imageUri, View view) {
                        funciona[0] = false;
                        Log.e("Universal Image LOading:", "descarga cancelada");
                    }
                });
        return funciona[0];
    }
}

Также не забудьте реализовать опции и конфигурацию вашего UIL. Я делаю это в ApplicationClass, вышеупомянутые опции и конфигурации являются примером, вы можете использовать стандартные или таможенные опции и конфигурацию в соответствии с вашими потребностями.

    public void cargarConfiguracionDeUniversalImageLoader() {
    //UNIVERSAL IMAGE LOADER OPCIONES
    DisplayImageOptions optionesBasicas = new DisplayImageOptions.Builder()
            //Roberto- Haciendo pruebas con el monitor de memoria.
            //desabilitar el caché de memoria ahorra hasta 10 MB en ejecución.
            .bitmapConfig(Bitmap.Config.RGB_565)
            .considerExifParams(true)
                    // Bitmaps in RGB_565 consume 2 times less memory than in ARGB_8888.
            .imageScaleType(ImageScaleType.EXACTLY).cacheInMemory(true).cacheOnDisk(true)
            .displayer(new FadeInBitmapDisplayer(500)).build();
    // UNIVERSAL IMAGE LOADER CONFIGURACION----------
    ImageLoaderConfiguration configuracionBasica =
            new ImageLoaderConfiguration.Builder(this).threadPoolSize(2).defaultDisplayImageOptions(optionesBasicas)

                    .diskCacheExtraOptions(480, 320, null).
                    diskCacheSize(50 * 1024 * 1024).diskCacheFileCount(100).build();
    ImageLoader.getInstance().init(configuracionBasica);
}

Я надеюсь, что этот пост поможет вам.

Другие вопросы по тегам