多条目加载的意思就是 :
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;
}