您的位置:首页 > 其它

ListView中Item多布局

2016-07-06 09:00 423 查看
public class LVAdapter extends BaseAdapter{

private Context context;
private List<Data> dataList;
final int VIEW_TYPE = 4;//总共有几种不同布局
final int TYPE_0 = 0;//没有图片
final int TYPE_1 = 1;//一张图片(小)
final int TYPE_2 = 2;//一张图片(大)
final int TYPE_3 = 3;//三张图片
private static final String TAG = "LVAdapter";
public LVAdapter(Context context, List<Data> dataList) {
this.context = context;
this.dataList = dataList;
}

@Override
public int getCount() {
return dataList.size();
}

/**
* 返回不同布局
* 每个convert view都会调用此方法,获得当前所需要的view样式
* @param position
* @return
*/
@Override
public int getItemViewType(int position) {
boolean isHas_image = dataList.get(position).isHas_image();//集合中是否有图片
if (!isHas_image) {//无图片
return TYPE_0;
}else{
List<Image_list> imagelist = dataList.get(position).getImage_list();//得到图片集合
int len = imagelist.size();//得到图片集合的大小
int height = imagelist.get(0).getHeight();//得到第一张图片的高
if (len == 1) {//有一张图片
if (height < 700) {//高度小于700(判断图片的大小)
return TYPE_1;
} else {//有一大张图片
return TYPE_2;
}
} else {//有三张图片
return TYPE_3;
}
}
}

@Override
public int getViewTypeCount() {
return VIEW_TYPE;//返回VIEW_TYPE的个数
}

@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

//有几种不同的VIEW建几个ViewHolder
ViewHolder0 holder0 = null;
ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
ViewHolder3 holder3 = null;
int type = getItemViewType(position);
if (convertView == null) {
//按当前所需的样式,确定new的布局
switch (type){
case TYPE_0://无图片
convertView = View.inflate(context,R.layout.lv_item_type0,null);
holder0 = new ViewHolder0();
holder0.item_title = (TextView) convertView.findViewById(R.id.item_title);
holder0.item_resource = (TextView) convertView.findViewById(R.id.item_resource);
convertView.setTag(holder0);
break;
case TYPE_1://有一张图片
convertView = View.inflate(context,R.layout.lv_item_type1,null);
holder1 = new ViewHolder1();
holder1.item1_title = (TextView) convertView.findViewById(R.id.item1_title);
holder1.item1_resource = (TextView) convertView.findViewById(R.id.item1_resource);
holder1.item1_img = (ImageView) convertView.findViewById(R.id.item1_img);
convertView.setTag(holder1);
break;
case TYPE_2://有一大张图片
convertView = View.inflate(context,R.layout.lv_item_type2,null);
holder2 = new ViewHolder2();
holder2.item2_title = (TextView) convertView.findViewById(R.id.item2_title);
holder2.item2_resource = (TextView) convertView.findViewById(R.id.item2_resource);
holder2.item2_img = (ImageView) convertView.findViewById(R.id.item2_img);
convertView.setTag(holder2);
break;
case TYPE_3://有三张图片
convertView = View.inflate(context,R.layout.lv_item_type3,null);
holder3 = new ViewHolder3();
holder3.item3_title = (TextView) convertView.findViewById(R.id.item3_title);
holder3.item3_resource = (TextView) convertView.findViewById(R.id.item3_resource);
holder3.item3_img1 = (ImageView) convertView.findViewById(R.id.item3_img1);
holder3.item3_img2 = (ImageView) convertView.findViewById(R.id.item3_img2);
holder3.item3_img3 = (ImageView) convertView.findViewById(R.id.item3_img3);
convertView.setTag(holder3);
break;
}
}else{
switch (type){
case TYPE_0:
holder0 = (ViewHolder0) convertView.getTag();
break;
case TYPE_1:
holder1 = (ViewHolder1) convertView.getTag();
break;
case TYPE_2:
holder2 = (ViewHolder2) convertView.getTag();
break;
case TYPE_3:
holder3 = (ViewHolder3) convertView.getTag();
break;
}
}
switch (type){
case TYPE_0:
holder0.item_title.setText(dataList.get(position).getAbstracts());
holder0.item_resource.setText(dataList.get(position).getSource());
break;
case TYPE_1:
holder1.item1_title.setText(dataList.get(position).getAbstracts());
holder1.item1_resource.setText(dataList.get(position).getSource());
holder1.item1_img.setImageResource(R.mipmap.img);
break;
case TYPE_2:
holder2.item2_title.setText(dataList.get(position).getAbstracts());
holder2.item2_resource.setText(dataList.get(position).getSource());
holder2.item2_img.setImageResource(R.mipmap.img);
break;
case TYPE_3:
holder3.item3_title.setText(dataList.get(position).getAbstracts());
holder3.item3_resource.setText(dataList.get(position).getSource());
holder3.item3_img1.setImageResource(R.mipmap.img);
holder3.item3_img2.setImageResource(R.mipmap.img);
holder3.item3_img3.setImageResource(R.mipmap.img);
break;
}
return convertView;
}
//各个布局的控件资源
class ViewHolder0{
TextView item_title;
TextView item_resource;
}
class ViewHolder1{
TextView item1_title;
TextView item1_resource;
ImageView item1_img;
}
class ViewHolder2{
TextView item2_title;
TextView item2_resource;
ImageView item2_img;
}
class ViewHolder3{
TextView item3_title;
TextView item3_resource;
ImageView item3_img1;
ImageView item3_img2;
ImageView item3_img3;
}


}

“`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: