Универсальный загрузчик изображений не работает на 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);
}
Я надеюсь, что этот пост поможет вам.