Universal Image Loader无法在BaseAdapter上运行

时间:2014-01-27 09:11:27

标签: android android-imageview 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 个答案:

答案 0 :(得分:1)

试试这个

@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))
}

答案 1 :(得分:0)

我在一个名为“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);
}

我希望这篇文章可以帮助你。