listview多条目+图片缓存

来源:互联网 发布:和日本女生恋爱知乎 编辑:程序博客网 时间:2024/05/14 19:36
//首先是适配器//要定义用几个布局    final int TYPE01=0;    final int TYPE02=1;    final int TYPE03=2;//除了原来适配器的方法,再写一个方法,里面是布局个数    @Override    public int getViewTypeCount() {        return 3;    }//再写一个用哪个布局的方法    @Override    public int getItemViewType(int position) {        if(list.get(position).getThumbnail_pic_s()!=null&&list.get(position).getThumbnail_pic_s02()==null&&list.get(position).getThumbnail_pic_s03()==null){        return TYPE01;}else if(list.get(position).getThumbnail_pic_s()!=null&&list.get(position).getThumbnail_pic_s02()!=null&&list.get(position).getThumbnail_pic_s03()==null){    return TYPE02;}else if(list.get(position).getThumbnail_pic_s()!=null&&list.get(position).getThumbnail_pic_s02()!=null&&list.get(position).getThumbnail_pic_s03()!=null){    return TYPE03;}    return 0;}//然后是最主要的方法@Overridepublic View getView(int position, View convertView, ViewGroup parent) {    ViewHolder holder;    //这是调用的图片缓存的方法    DisplayImageOptions option = new DisplayImageOptions.Builder()    .cacheInMemory(true)    .cacheOnDisk(true)    .bitmapConfig(Bitmap.Config.RGB_565)    .imageScaleType(ImageScaleType.EXACTLY)    .build();    int type = getItemViewType(position);    if(type==0){    if(convertView==null){        convertView = View.inflate(context, R.layout.item, null);        holder=new ViewHolder();        holder.tv= (TextView) convertView.findViewById(R.id.tv);        holder.img01= (ImageView) convertView.findViewById(R.id.img01);        convertView.setTag(holder);    }else {        holder = (ViewHolder) convertView.getTag();    }        holder.tv.setText(list.get(position).getAuthor_name()+"---"+list.get(position).getDate());    ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.img01,option);    }    else if(type==1){    if(convertView==null){        convertView = View.inflate(context, R.layout.item02, null);        holder=new ViewHolder();        holder.tv02= (TextView) convertView.findViewById(R.id.tv02);        holder.imgg01= (ImageView) convertView.findViewById(R.id.imgg01);        holder.imgg02= (ImageView) convertView.findViewById(R.id.imgg02);        convertView.setTag(holder);    }else {        holder = (ViewHolder) convertView.getTag();    }        holder.tv02.setText(list.get(position).getAuthor_name()+"---"+list.get(position).getDate());    ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.imgg01,option);    ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.imgg02,option);    }    else if(type==2){    if(convertView==null){        convertView = View.inflate(context, R.layout.item03, null);        holder=new ViewHolder();        holder.tv03= (TextView) convertView.findViewById(R.id.tv03);        holder.imggg01= (ImageView) convertView.findViewById(R.id.imggg01);        holder.imggg02= (ImageView) convertView.findViewById(R.id.imggg02);        holder.imggg03= (ImageView) convertView.findViewById(R.id.imggg03);        convertView.setTag(holder);    }else {        holder = (ViewHolder) convertView.getTag();    }        holder.tv03.setText(list.get(position).getAuthor_name()+"---"+list.get(position).getDate());    ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.imggg01,option);    ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.imggg02,option);    ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder.imggg03,option);    }        return convertView;    }//关于调用的那个app加载图片方法是这样的//别忘了写清单文件和导包public class Myapp extends Application {@Overridepublic void onCreate() {super.onCreate();File file = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "UniversalImageLoader/Cache");DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(getApplicationContext()).defaultDisplayImageOptions(options).memoryCache(new LRULimitedMemoryCache(12*1024*1024)).memoryCacheSize(12*1024*1024).diskCache(new UnlimitedDiskCache(file)).threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().diskCacheFileNameGenerator(new Md5FileNameGenerator()).tasksProcessingOrder(QueueProcessingType.LIFO).writeDebugLogs().build();ImageLoader.getInstance().init(configuration);}}
原创粉丝点击