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; }
}
“`
相关文章推荐
- Android实现开机自动启动Service或app的方法
- 3. 装饰者模式:装饰对象
- 深入解析Java的Hibernate框架中的持久对象
- java sql ResultSet 如何判断ResultSet中存在记录
- EditPlus绿色汉化破解版的注册码信息
- 最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!
- linux命令 sort
- 《C++精英内参之程序员高效指南》-23在走路中健身的方法
- [ERP]ERP原理与应用试题(附答案)
- mysql优化之查询优化
- js单选框、复选框练习
- Myeclipse2014如何设置在启动时弹出选择WorkSpace的对话框
- 【Android 开发】:Content Provider (内容提供者) 详解
- 《C++精英内参之程序员高效指南》-22提升效率的三板斧
- Command模式详解--设计模式(19)
- HTTP协议
- maven自建仓库 Return code : 405
- mysql优化之连接优化
- yii2 ActiveRecord多表关联以及多表关联搜索的实现
- runat="server" 是什么意思?