第一步( 个人习惯):
因为我是两个布局文件,所以先初始化两个常量,来区分我所使用的到底是哪个布局;
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;
}
============================================================================================