一个ListView使用多个布局文件

来源:互联网 发布:淘宝评价非欧什么意思 编辑:程序博客网 时间:2024/05/16 09:41

第一步( 个人习惯):

            因为我是两个布局文件,所以先初始化两个常量,来区分我所使用的到底是哪个布局;

            private static final int LEFT = 0;
            private static final int RIGHT = 1;

第二部:

            在自定义Adapter中继承BaseAdapter其它的方法都是一样的,只是多重写了两个方法(记住这两个方法一定要配套使用):

              1)getViewTypeCount():这个方法的返回值是ListView中一共有几个要显示的视图;

              2)getItemViewType(int position):这个方法是制定适配器显示当前position位置数据时,应该使用哪个视图;

第三部:

            在给getVIew方法中判断getItemViewType()方法的返回值和我初始化的两个常量进行判断,来确定使用那个布局:


              具体代码实现:

方法===============================================================================================================================================================================

            @Override
       public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final ViewHolder holder;
        if (convertView == null) {

            if(getItemViewType(position) ==LEFT) {
                convertView = inflater.inflate(R.layout.sms_detail_left_item,
                        parent, false);
            }else{
                convertView = inflater.inflate(R.layout.sms_detail_right_item,
                        parent, false);
            }

            holder = new ViewHolder();

            holder.imgPhoto = (ImageView) convertView
                    .findViewById(R.id.img_detail_photo);
            holder.tvDate = (TextView) convertView
                    .findViewById(R.id.tv_item_date);
            holder.tvBody = (TextView) convertView
                    .findViewById(R.id.tv_detail_body);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        
        return convertView;
    }

============================================================================================
  

0 0
原创粉丝点击