比如有一个聊天类的ListView,要求我的消息和别人的消息分开,用ListView实现,可以为我的消息和别人的消息设置布局文件
入下图所示:
public class ListItemCommentBeanAdapter extends BaseAdapter { private List<HelpCommentBean.Body.Results> data; private LayoutInflater layoutInflater; private Context context; private final int VIEW_TYPE_COUNT=2; private final int TYPE_MY_COMMENT=1; private final int TYPE_HIS_COMMENT=0; public ListItemCommentBeanAdapter(Context context, List<HelpCommentBean.Body.Results> data){ this.context=context; this.data=data; this.layoutInflater=LayoutInflater.from(context); DebugLog.v("App.UserId is "+App.UserId); } public final class HisCommentViewHolder { public CircleImageView portrait; public TextView magazine; public TextView name; public TextView publish_time; public TextView details; public TextView thanks; } public final class MyCommentViewHolder { public CircleImageView portrait; public TextView magazine; public TextView name; public TextView publish_time; public TextView details; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } //每个convert view都会调用此方法,获得当前所需要的view样式 @Override public int getItemViewType(int position) { String userans=data.get(position).getUserans(); DebugLog.v("user ans is "+userans); if("Y".equals(userans)){ return TYPE_MY_COMMENT; }else{ return TYPE_HIS_COMMENT; } } @Override public int getViewTypeCount() { return VIEW_TYPE_COUNT; } @Override public View getView(final int position, View convertView, ViewGroup parent) { HisCommentViewHolder his_comment_view_holder=null; MyCommentViewHolder my_comment_view_holder=null; int type = getItemViewType(position); if(convertView==null){ switch(type){ case TYPE_HIS_COMMENT: his_comment_view_holder=new HisCommentViewHolder(); convertView=layoutInflater.inflate(R.layout.his_comment_list_item, null); his_comment_view_holder.name=(TextView)convertView.findViewById(R.id.name); his_comment_view_holder.magazine=(TextView)convertView.findViewById(R.id.magazine); his_comment_view_holder.details=(TextView)convertView.findViewById(R.id.details); his_comment_view_holder.publish_time=(TextView)convertView.findViewById(R.id.publish_time); his_comment_view_holder.thanks=(TextView)convertView.findViewById(R.id.thanks); his_comment_view_holder.portrait=(CircleImageView)convertView.findViewById(R.id.portrait); convertView.setTag(his_comment_view_holder); break; case TYPE_MY_COMMENT: my_comment_view_holder=new MyCommentViewHolder(); convertView=layoutInflater.inflate(R.layout.my_comment_list_item, null); my_comment_view_holder.name=(TextView)convertView.findViewById(R.id.name); my_comment_view_holder.magazine=(TextView)convertView.findViewById(R.id.magazine); my_comment_view_holder.details=(TextView)convertView.findViewById(R.id.details); my_comment_view_holder.publish_time=(TextView)convertView.findViewById(R.id.publish_time); my_comment_view_holder.portrait=(CircleImageView)convertView.findViewById(R.id.portrait); convertView.setTag(my_comment_view_holder); break; } }else{ switch(type){ case TYPE_HIS_COMMENT: his_comment_view_holder=(HisCommentViewHolder)convertView.getTag(); break; case TYPE_MY_COMMENT: my_comment_view_holder=(MyCommentViewHolder)convertView.getTag(); break; } } ........ } return convertView; } }