//拿一个平常的练习题 条目展示图片和文字 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);
}
}
}