Android中Listview多条目
来源:互联网 发布:linux 查找文件命令 编辑:程序博客网 时间:2024/05/16 08:38
//拿一个平常的练习题 条目展示图片和文字 imageloadr加载网络图片
public class MyAdapter extends BaseAdapter {
public List<DataBean.ItemBean> list = new ArrayList<DataBean.ItemBean>();public Context context;
//加载不同布局对应的类型;自定义
public final int TYPE_RIGHT = 0;
public final int TYPE_LEFT = 1;
public final int TYPE_TIME = 2;
public ImageLoader loader;
private DisplayImageOptions options;
public MyAdapter(List<DataBean.ItemBean> list, Context context) {
this.list = list;
this.context = context;
options = new DisplayImageOptions.Builder()
.cacheOnDisk(true)
.cacheInMemory(true)
.build();
loader = ImageLoader.getInstance();
}
@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 int getItemViewType(int position) {
//从list中取出对应position加载的数据;
DataBean.ItemBean itemBean = list.get(position);
//根据数据类型,返回不同的type
if (itemBean.tag.equals("right")) {
return TYPE_RIGHT;
}
if (itemBean.tag.equals("left")) {
return TYPE_LEFT;
}
if (itemBean.tag.equals("time")) {
return TYPE_TIME;
}
return 0;
}
@Override
public int getViewTypeCount() {
//返回listview加载几种布局;
return 3;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//********第一步:初始化布局;
ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
ViewHolder3 holder3 = null;
int type = getItemViewType(position);
if (convertView == null) {
switch (type) {
case TYPE_LEFT:
convertView = View.inflate(context, R.layout.item_left_layout, null);
holder1 = new ViewHolder1(convertView);
convertView.setTag(holder1);
break;
case TYPE_RIGHT:
convertView = View.inflate(context, R.layout.right_item_layout, null);
holder2 = new ViewHolder2(convertView);
convertView.setTag(holder2);
break;
case TYPE_TIME:
convertView = View.inflate(context, R.layout.item_time_layout, null);
holder3 = new ViewHolder3(convertView);
convertView.setTag(holder3);
break;
default:
break;
}
} else {
switch (type) {
case TYPE_LEFT:
holder1 = (ViewHolder1) convertView.getTag();
break;
case TYPE_RIGHT:
holder2 = (ViewHolder2) convertView.getTag();
break;
case TYPE_TIME:
holder3 = (ViewHolder3) convertView.getTag();
break;
default:
break;
}
}
//********第二步:给布局赋值,显示数据;
DataBean.ItemBean itemBean = list.get(position);
switch (type) {
case TYPE_LEFT:
DataBean.MessageBean left = (DataBean.MessageBean) itemBean.data;
loader.displayImage(left.photo, holder1.left_item_img, options);
holder1.left_item_name.setText(left.name);
holder1.left_item_msg.setText(left.msg);
break;
case TYPE_RIGHT:
DataBean.MessageBean right = (DataBean.MessageBean) itemBean.data;
loader.displayImage(right.photo, holder2.left_item_img, options);
holder2.left_item_name.setText(right.name);
holder2.left_item_msg.setText(right.msg);
break;
case TYPE_TIME:
DataBean.TimeBean time = (DataBean.TimeBean) itemBean.data;
holder3.left_item_name.setText(time.time);
break;
default:
break;
}
return convertView;
}
public static class ViewHolder1 {
public View rootView;
public ImageView left_item_img;
public TextView left_item_name;
public TextView left_item_msg;
public ViewHolder1(View rootView) {
this.rootView = rootView;
this.left_item_img = (ImageView) rootView.findViewById(R.id.left_item_img);
this.left_item_name = (TextView) rootView.findViewById(R.id.left_item_name);
this.left_item_msg = (TextView) rootView.findViewById(R.id.left_item_msg);
}
}
class ViewHolder2 {
public View rootView;
public TextView left_item_msg;
public TextView left_item_name;
public ImageView left_item_img;
public ViewHolder2(View rootView) {
this.rootView = rootView;
this.left_item_msg = (TextView) rootView.findViewById(R.id.left_item_msg);
this.left_item_name = (TextView) rootView.findViewById(R.id.left_item_name);
this.left_item_img = (ImageView) rootView.findViewById(R.id.left_item_img);
}
}
public static class ViewHolder3 {
public View rootView;
public TextView left_item_name;
public ViewHolder3(View rootView) {
this.rootView = rootView;
this.left_item_name = (TextView) rootView.findViewById(R.id.left_item_name);
}
}
}
阅读全文
1 0
- Android中Listview多条目
- Android ListView多条目展示
- Android中ListView中定义头条目
- Android Dialog中加载listView,listView 的条目自适应屏幕
- Android--------ListView多条目展示数据
- Android---ListView(显示条目)
- Android中listview条目中按钮点击事件的实现
- Android中多条目布局
- Android中多条目加载
- Android开发-----02-ListView中给某些条目进行倒计时
- Android在ListView中移除某个Item条目
- ListView多条目展示
- ListView多条目显示
- ListView多条目展示
- listview多条目展示
- ListView多条目加载
- listView 多条目展示
- listView多条目显示
- WebGL框架比较之Three.js和Babylon.js的比较
- 2017/8/24训练日记(long long 以及 int ,long使用范围)
- B+树
- HDU 1969 Pie [二分]
- Oracle小总结
- Android中Listview多条目
- 二叉查找树--查找、删除、插入(Java实现)
- volatile关键字概念
- 元信息标记<meta>
- C语言 输出
- JAVA时间类
- 语言小知识-python-random生成随机数
- C语言Window控制台实现弹弹方块(单个方块,多个方块)
- angularjs技术实现购物车加减页面,订单页面