0

Привет, я использую Universal Image Loader для 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; 

} 
} 

Любой ключ, почему это происходит?

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

EDIT: Я пытаюсь показать эти изображения на эко-галерее

+0

Что такое 'myUrl'? вы ничего не делаете в 'onLoadingCompleted', если' myUrl' загружен успешно. – 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) { 
} 

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

@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, приведенные выше параметры и config - пример, вы можете использовать настройки по умолчанию или таможни & конфигурации в соответствии с вашими потребностями.

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

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

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