ListView中同时包含多种布局

比如有一个聊天类的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;
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值