web-dev-qa-db-fra.com

Comment utiliser Universal Image Loader

J'ai besoin de charger des vignettes et une variable Text dans ListView qui est définie par la valeur personnalisée Adapter. Les miniatures doivent être stockées dans une mémoire cache, pour cela, j'utilise Universal Image Loader, mais je suis assez confus quant à son implémentation et à son utilisation conformément à mon exigence de charger les images dans ListView à partir de URL. S'il vous plaît, suggérez-moi quelques façons de procéder avec une bonne mise en œuvre.

12
Nitin Bathija

Écrivez la ligne de code ci-dessous dans la méthode getView () de votre adaptateur, ici imageUrls [position] est un tableau d'adresses URL et holder.image est une image.

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

Et écrivez en dessous de la ligne de code dans le constructeur de votre adaptateur.

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

cela résoudra votre problème, et si vous avez des questions à ce sujet, dites-le-moi.

Et voir le lien ci-dessous pour le code source complet de l'exemple Universal Image Loader.

Android - Universal Image Loader

15
Dipak Keshariya

Dans oncreate () de votre adaptateur, définissez

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

et l'utiliser dans la méthode getView ():

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

Je vais vous suggérer d'utiliser AQuery - (Android-Query) - un cadre de manipulation d'interface utilisateur extrêmement simple pour Android.

AQuery est fourni en tant que bibliothèque, que vous devez inclure dans votre chemin de génération.

Dans AQuery, vous pouvez télécharger, afficher (avec effets) et mettre en cache l'image (en mémoire et sur disque) avec les lignes suivantes:

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 gérera tous les processus de téléchargement de données et affichera des images sur votre ImageView que vous avez fourni. Une fois l'image chargée, celle-ci sera mise en cache dans la mémoire (ou le disque) conformément aux paramètres booléens memCache et fileCache. La prochaine fois, il chargera l'image à partir du cache de mémoire ou du cache de fichiers.

Pour plus d'informations et d'exemples, vous devez visiter le projet AQuery à l'adresse http://code.google.com/p/Android-query/

Plus de code sur le chargement d'image - http://code.google.com/p/Android-query/wiki/ImageLoading

8
Vishnu Haridas

Cela vous aidera à charger imageurl en utilisant universel imageloader, il donnera le statut à imageurl en cours de chargement, terminé ou échoué et la demande est en annulation en fournissant également le statut.J'espère que cela pourra vous aider. 

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

si vous aimez mettre en cache l'image, ajoutez ceci ci-dessous des fonctions ... Mais pour commencer à créer parce que c'est très hautement ..

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

Ensuite, vous ajouterez cette fonction ImageLoadingListener () ...

public void ImageLoaderListener(String url){
  imageLoader.loadImage(url, defaultOptions, new ImageLoadingListener() {
1
Mathan Chinna
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");
                }
            }
        }
}
0
Virendra Parihar