12

我有一个需要加载缩略图的要求,以及一个由TextListView定义设置的Adapter. 缩略图应该存储在缓存中,因为我使用的是通用图像加载器,但是我对它的实现以及如何根据我的要求使用它来ListViewURL. 请建议我一些实施良好的方法。

4

5 回答 5

15

将下面的代码行写入适配器的 getView() 方法,这里 imageUrls[position] 是 Image Urls 的数组, holder.image 是 imageview。

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

并将下面的代码行写入您的适配器构造函数。

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

它将解决您的问题,如果您对此有任何疑问,请告诉我。

有关通用图像加载器示例的完整源代码,请参见下面的链接。

Android - 通用图像加载器

于 2012-12-13T06:40:18.577 回答
8

在适配器的 oncreate() 中定义

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

并在 getView() 方法中使用它:

imageLoader.DisplayImage(//your image url, //your imageView);
于 2012-12-13T06:28:43.040 回答
8

我会建议你使用 AQuery - (Android-Query) - 一个用于 Android 的超级简单的 UI 操作框架。

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 上显示图像。加载图像后,将根据布尔参数memCachefileCache. 下一次,它将从内存缓存或文件缓存中加载图像。

有关更多信息和示例,您应该访问http://code.google.com/p/android-query/上的 AQuery 项目

有关图像加载的更多代码 - http://code.google.com/p/android-query/wiki/ImageLoading

于 2012-12-13T06:34:01.347 回答
1

这将帮助您使用通用图像加载器加载 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() {
于 2016-10-20T12:39:04.143 回答
0
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");
                }
            }
        }
}
于 2017-05-13T09:25:31.477 回答