У меня есть требование, когда мне нужно загрузить миниатюры и Text
в ListView
, который устанавливается пользовательским Adapter
. Миниатюры должны храниться в кэш-памяти, для этого я использую универсальный загрузчик изображений, однако я довольно сильно запутался в его реализации и в том, как использовать его в соответствии с моим требованием для загрузки изображений в ListView
из URL
. Пожалуйста, предложите мне несколько способов для этого с хорошей реализацией.
Как использовать универсальный загрузчик изображений
Ответы (4)
Напишите ниже строку кода в методе getView() вашего адаптера, здесь imageUrls[position] — это массив URL-адресов изображений, аholder.image — это изображение.
imageLoader.displayImage(imageUrls[position], holder.image, null);
И напишите ниже строку кода в свой конструктор адаптера.
ImageLoader imageLoader=new ImageLoader(activity.getApplicationContext());
это решит вашу проблему, и если у вас есть какие-либо вопросы по этому поводу, скажите мне.
И см. ссылку ниже для полного исходного кода универсального примера загрузчика изображений.
Android — универсальный загрузчик изображений
В вашем адаптере oncreate() определите
ImageLoader imageLoader=new ImageLoader(activity.getApplicationContext());
и используйте его в методе getView():
imageLoader.DisplayImage(//your image url, //your imageView);
Я предлагаю вам использовать AQuery — (Android-Query) — очень простую структуру манипулирования пользовательским интерфейсом для Android.
AQuery поставляется в виде библиотеки, которую необходимо включить в путь сборки.
В AQuery вы можете загрузить, отобразить (с эффектами) и кэшировать изображение (как в памяти, так и на диске) со следующими строками:
AQuery aq = new AQuery(yourActivity.this);
boolean memCache = true;
boolean fileCache = true;
aq.id(R.id.image1).image("http://www.example.com/image.jpg", memCache, fileCache);
AQuery будет обрабатывать все процессы загрузки данных и отображать изображения в предоставленном вами ImageView. Как только вы загрузите изображение, оно будет кэшировано в памяти (или на диске) в соответствии с логическими параметрами memCache
и fileCache
. В следующий раз он загрузит изображение из кеша памяти или файлового кеша.
Для получения дополнительной информации и примеров посетите проект AQuery по адресу http://code.google.com/p/android-query/
Дополнительный код для загрузки изображений: http://code.google.com/p/android-query/wiki/ImageLoading
Это поможет вам загрузить imageurl с помощью универсального загрузчика изображений, он даст статус для imageurl — это начало загрузки, завершено или не выполнено, а запрос также предоставляет статус отмены. Надеюсь, это может вам помочь.
public void ImageLoaderListener(String url){
imageLoader.loadImage(url,new ImageLoadingListener(){
@Override
public void onLoadingStarted(String imageUri, View view) {
Log.e("tag", "onLoadingStarted");
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
Log.e("tag", "onLoadingFailed");
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
Log.e("tag", "onLoadingComplete");
imageView.setImageBitmap(loadedImage);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
Log.e("tag", "onLoadingCancelled");
}
});
}
если вы хотите кэшировать изображение, добавьте эти функции ниже... Но инициировать создание, потому что это очень высоко..
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.build();
imageLoader = ImageLoader.getInstance();
if (!imageLoader.isInited()) {
imageLoader.init(config);
}
defaultOptions = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.build();
Затем вы добавите эту функцию ImageLoadingListener()...
public void ImageLoaderListener(String url){
imageLoader.loadImage(url, defaultOptions, new ImageLoadingListener() {