Подтвердить что ты не робот

Как использовать универсальный загрузчик изображений

У меня есть требование, когда мне нужно загрузить эскизы и Text в ListView, которые устанавливаются пользовательским Adapter. Миниатюры должны храниться в кэш-памяти, потому что я использую Universal Image Loader, но я довольно сильно запутался в его реализации и как использовать его согласно моему требованию для загрузки изображений в ListView из URL. Пожалуйста, предложите мне несколько способов для этого с хорошей реализацией.

4b9b3361

Ответ 1

Запишите ниже строку кода в свой метод getView(), здесь imageUrls [position] - это массив URL-адресов изображения, а файл -обладатель - изображение.

imageLoader.displayImage(imageUrls[position], holder.image, null);

И напишите ниже строку кода в свой конструктор адаптера.

ImageLoader imageLoader=new  ImageLoader(activity.getApplicationContext());

он решит вашу проблему, и если у вас есть какие-либо вопросы относительно этого, скажите мне.

И см. ниже ссылку на полный исходный код примера Universal Image Loader.

Android - Универсальный загрузчик изображений

Ответ 2

В вашем адаптере oncreate() define

 ImageLoader imageLoader=new  ImageLoader(activity.getApplicationContext());

и использовать его в методе getView():

imageLoader.DisplayImage(//your image url, //your imageView);

Ответ 3

Я предлагаю вам использовать 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

Ответ 4

Это поможет вам загрузить imageurl с помощью универсального imageloader, он даст статус для 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() {

Ответ 5

public class CategoryModel 
{
        String CatId;
        String CatName;
        String Image;
        String Price;
        Bitmap ImgSrc;
        CategoryAdapter Ma;
        public CategoryModel()
        {
        }
        public CategoryModel(String catid,String catname,String image,String price)
        {
            this.CatId = catid;
            this.CatName = catname;
            this.Image = image;
            this.Price = price;
        }
        public CategoryModel(String catname,String image,String price)
        {
            this.CatName = catname;
            this.Image = image;
            this.Price = price;
        }
        public void setCatId(String catid)
        {
            this.CatId =catid;
        }
        public String getCatId()
        {
            return this.CatId;
        }
        public void setCatName(String catname)
        {
            this.CatName=catname;
        }
        public String getCatName()
        {
            return this.CatName;
        }
        public void setImage(String image)
        {
            this.Image=image;
        }
        public String getImage()
        {
            return this.Image;
        }
        public void setPrice(String price)
        {
            this.Price=price;
        }
        public String getPrice()
        {
            return this.Price;
        }
        public Bitmap getImagesrc()
        {
            return this.ImgSrc;
        }
        public void setAdapter(CategoryAdapter adf)
        {
            this.Ma = adf;
        }
        public CategoryAdapter getAdapter()
        {
            return this.Ma;
        }

        public void LoadImage(CategoryAdapter adap)
        {
            this.Ma = adap;
            if(Image != null && !Image.equals(""))
            {
                new ImageLoader().execute(new String[]{ Image });
            }
        }
        public static Bitmap getBitmapUrl(String src)
        {
            try
            {
                URL url = new URL(src);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                Bitmap mybitmap = BitmapFactory.decodeStream(input);
                connection.disconnect();
                return mybitmap;
            }
            catch (Exception e) {
                return null;
            }
        }
        private class ImageLoader extends AsyncTask<String, String, Bitmap>
        {
            @Override
            protected void onPreExecute()
            {
            }
            @Override
            protected Bitmap doInBackground(String... params) {
                try
                {
                    Bitmap b = getBitmapUrl(params[0]);
                    return b;
                }
                catch (Exception e)
                {
                    Log.e("Excep", e.toString());
                    return null;
                }
            }
            @Override
            protected void onPostExecute(Bitmap res)
            {
                if(res!=null)
                {
                    ImgSrc = res;
                    if(Ma!=null)
                    {
                        Ma.notifyDataSetChanged();
                    }
                }
                else
                {
                    Log.e("Error", "Image not Loading");
                }
            }
        }
}