0

您好我正在使用适用于Android库的通用图像加载程序以异步方式将图像下载到我的Android应用程序。通用图像加载器无法在BaseAdapter上工作

当它被用来在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; 

} 
} 

任何线索,为什么会出现这种情况?

在此先感谢

编辑:我试图表现出对生态画廊这些图像

+0

什么是myUrl?如果'myUrl'已成功加载,则不会对'onLoadingCompleted'做任何事情。 – Apoorv

+0

将布局参数设置为您的ImageView。 – NOSTRA

回答

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

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

相关问题