多条目 加载

来源:互联网 发布:福州天勤网络 编辑:程序博客网 时间:2024/06/09 22:12

多条目加载的意思就是 :

                   1. 有几种类型就建立建立几个控件布局

                    2.然后就有几个ViewHolder  在进行判断


Context context;

    List<DMyBean.ResultsBean> list;
                //只有文本
                private final int ONLY_TITLE=0;
                //有图片且在右边
                private final int ONLY_IMAGE_RIGHT=1;
                //2.设置显示图片的类
                // 重点
                private DisplayImageOptions options;

    public DList_Baseadapter(Context context, List<DMyBean.ResultsBean> list) {
        this.context = context;
        this.list = list;
        //重点
        options=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
                .displayer(new RoundedBitmapDisplayer(20))//设置圆角图片
                .build();
    }
                

                //返回视图类型的个数
                @Override
                public int getViewTypeCount() {
                    return 2;
                }
            //    得到 item 的类型
                @Override
                public int getItemViewType(int position) {
                    //根据数据来判断,显示哪种类型
                    List<String> picurls=list.get(position).getImages();
                    if(picurls==null){
                        return ONLY_TITLE;//返回文本类型
                    }else if(picurls!=null && picurls.size()==1){//集合长度是1
                        return  ONLY_IMAGE_RIGHT;//返回图片类型
                    }else{
                        return ONLY_TITLE;//返回文本类型
                    }
                }
    @Override
    public int getCount() {
        return list.size();
    }
    @Override
    public Object getItem(int position) {
        return list.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //判断条目的类型
        int type=getItemViewType(position);
        Log.d("zzz","type:"+type+" position:"+position);
//进行判断  只有文字
        if(type==ONLY_TITLE){
                            ViewHolderTitle holderTitle;
                            if(convertView==null){
                                holderTitle=new ViewHolderTitle();
                                convertView=View.inflate(context,R.layout.item_3,null);
                                holderTitle.tvTitle=(TextView) convertView.findViewById(R.id.item_text1);
                                convertView.setTag(holderTitle);
                            }else{
                                holderTitle=(ViewHolderTitle) convertView.getTag();
                            }
                            //显示数据
                            holderTitle.tvTitle.setText(list.get(position).getDesc());
                            return  convertView;
            
// 否则有图片
        }else if(type==ONLY_IMAGE_RIGHT){
                            ViewHolderImage holderImage;
                            if(convertView==null){
                                holderImage=new ViewHolderImage();
                                convertView=View.inflate(context,R.layout.item_2,null);
                                holderImage.tvTitle=(TextView) convertView.findViewById(R.id.item_text1);
                                holderImage.img=(ImageView) convertView.findViewById(R.id.item_image);

                                convertView.setTag(holderImage);
                            }else{
                                holderImage=(ViewHolderImage) convertView.getTag();
                            }
                            //显示数据
                            holderImage.tvTitle.setText(list.get(position).getDesc());
                            //显示图片
                            ImageLoader.getInstance().displayImage(list.get(position).getImages().get(0),holderImage.img,options);
                            Log.d("zzz","type:"+type+"   "+list.get(position).getImages().get(0));
                            return  convertView;
        }else{
        }                     return  convertView;
    }
    
    
//    有几个分类就建立几个  ViewHolder
    class ViewHolderTitle{
        TextView tvTitle;
    }
    class ViewHolderImage{
        ImageView img;
        TextView tvTitle;
    }