ListView 多布局

/**
 * 个人这主页的Adapter,含多种布局
 * @author Aman
 *
 */
public class PersonalCenterAdapter  extends PersonalBaseAdapter{


private Context mContext;
private ArrayList<PersonalCenterInfo> mDatas;
private LayoutInflater mInflater;
private int type;
// private ClickListener mClickListener;
//
// public interface ClickListener{
// public void onClick(View v);
// }

public void setClickListner( ClickListener clickListener){
this. mClickListener = clickListener;
}
public PersonalCenterAdapter(Context context, ArrayList<PersonalCenterInfo> datas) {
this.mContext = context;
this.mDatas = datas;
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


/**
* @param type :<br>
* 1:发布;<br>
* 2:关注;<br>
* 3:粉丝;<br>
* 4:收藏;
*/
public void setType(int type){
this.type = type;
}
public void refreshData( ArrayList<PersonalCenterInfo> datas){
//this.mDatas.clear();
this.mDatas = datas;
notifyDataSetChanged();
}


@Override
public int getCount() {
return mDatas.size();
}


@Override
public Object getItem(int position) {
return mDatas.get(position);
}


@Override
public long getItemId(int position) {
return position;
}


@Override
public int getViewTypeCount() {
return 4;
}
public int getItemViewType(int position) {
   return type;//特别注意:type一定要冲0开始
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
PublishHolder publishHolder = null;
InterestHolder  interestHolder= null;
FansHolder fansHolder= null;
FavouriteHolder favouriteHolder= null;

int type = getItemViewType(position);

if (convertView == null) {
//按当前所需的样式,确定new的布局
if(type == 0) {
publishHolder = new PublishHolder();
convertView = mInflater.inflate(R.layout.personal_center_publish_view_item, null);

publishHolder.userPhoto = (CircularImage) convertView.findViewById(R.id.iv_icon);
publishHolder.name = (TextView) convertView.findViewById(R.id.tv_name);
publishHolder.location = (TextView) convertView.findViewById(R.id.tv_km);
publishHolder.time = (TextView) convertView.findViewById(R.id.tv_time);
publishHolder.price = (TextView) convertView.findViewById(R.id.tv_price);
publishHolder.shareCount = (TextView) convertView.findViewById(R.id.tv_send);
publishHolder.commentCount = (TextView) convertView.findViewById(R.id.tv_comment);
publishHolder.title = (TextView) convertView.findViewById(R.id.tv_title);
publishHolder.content = (TextView) convertView.findViewById(R.id.tv_content);

//holder.job = (TextView) convertView.findViewById(R.id.personal_center_publish_view_item_tv_job);
//holder.addInterest = (TextView) convertView.findViewById(R.id.personal_center_publish_view_item_tv_addintertst);


publishHolder.img_LinearLayout1 = (LinearLayout) convertView.findViewById(R.id.layout_content1);
publishHolder.img1 = (ImageView) publishHolder.img_LinearLayout1.findViewById(R.id.img1);
publishHolder.img2 = (ImageView) publishHolder.img_LinearLayout1.findViewById(R.id.img2);
publishHolder.img3 = (ImageView) publishHolder.img_LinearLayout1.findViewById(R.id.img3);

publishHolder.img_LinearLayout2 = (LinearLayout) convertView.findViewById(R.id.layout_content2);
publishHolder.img4 = (ImageView) publishHolder.img_LinearLayout2 .findViewById(R.id.img1);
publishHolder.img5 = (ImageView) publishHolder.img_LinearLayout2 .findViewById(R.id.img2);
publishHolder.img6 = (ImageView) publishHolder.img_LinearLayout2 .findViewById(R.id.img3);
convertView.setTag(publishHolder);
}
if(type ==1) {
interestHolder = new InterestHolder();

convertView = mInflater.inflate(R.layout.personal_center_interest_view_item, null);

interestHolder.userPhoto = (CircularImage) convertView.findViewById(R.id.personal_center_interest_view_item_iv_headIcon);
interestHolder.name = (TextView) convertView.findViewById(R.id.personal_center_interest_view_item_tv_name);
interestHolder.location = (TextView) convertView.findViewById(R.id.personal_center_interest_view_item_tv_area);
interestHolder.job = (TextView) convertView.findViewById(R.id.personal_center_interest_view_item_tv_job);
interestHolder.addInterest = (TextView) convertView.findViewById(R.id.personal_center_interest_view_item_tv_addintertst);

convertView.setTag(interestHolder);
}
if(type ==2) {
fansHolder = new FansHolder();

convertView = mInflater.inflate(R.layout.personal_center_fans_view_item, null);

fansHolder.userPhoto = (CircularImage) convertView.findViewById(R.id.personal_center_fans_view_item_iv_headIcon);
fansHolder.name = (TextView) convertView.findViewById(R.id.personal_center_fans_view_item_tv_name);
fansHolder.location = (TextView) convertView.findViewById(R.id.personal_center_fans_view_item_tv_area);
fansHolder.job = (TextView) convertView.findViewById(R.id.personal_center_fans_view_item_tv_job);
fansHolder.addInterest = (TextView) convertView.findViewById(R.id.personal_center_fans_view_item_tv_addintertst);

convertView.setTag(fansHolder);
}
if(type ==3) {
favouriteHolder=new FavouriteHolder();
convertView = mInflater.inflate(R.layout.personal_center_favourite_view_item, null);

favouriteHolder.userPhoto = (CircularImage) convertView.findViewById(R.id.iv_icon);
favouriteHolder.name = (TextView) convertView.findViewById(R.id.tv_name);
favouriteHolder.location = (TextView) convertView.findViewById(R.id.tv_km);
favouriteHolder.time = (TextView) convertView.findViewById(R.id.tv_time);
favouriteHolder.shareCount = (TextView) convertView.findViewById(R.id.tv_send);
favouriteHolder.commentCount = (TextView) convertView.findViewById(R.id.tv_comment);
favouriteHolder.title = (TextView) convertView.findViewById(R.id.tv_title);
favouriteHolder.content = (TextView) convertView.findViewById(R.id.tv_content);

favouriteHolder.img_LinearLayout1 = (LinearLayout) convertView.findViewById(R.id.layout_content1);
favouriteHolder.img1 = (ImageView) favouriteHolder.img_LinearLayout1.findViewById(R.id.img1);
favouriteHolder.img2 = (ImageView) favouriteHolder.img_LinearLayout1.findViewById(R.id.img2);
favouriteHolder.img3 = (ImageView) favouriteHolder.img_LinearLayout1.findViewById(R.id.img3);

favouriteHolder.img_LinearLayout2 = (LinearLayout) convertView.findViewById(R.id.layout_content2);
favouriteHolder.img4 = (ImageView) favouriteHolder.img_LinearLayout2 .findViewById(R.id.img1);
favouriteHolder.img5 = (ImageView) favouriteHolder.img_LinearLayout2 .findViewById(R.id.img2);
favouriteHolder.img6 = (ImageView) favouriteHolder.img_LinearLayout2 .findViewById(R.id.img3);
convertView.setTag(favouriteHolder);
}

} else {
//有convertView,按样式,取得不用的布局
switch(type)
{
case 0:
publishHolder = (PublishHolder) convertView.getTag();
break;
case 1:
interestHolder =  (InterestHolder) convertView.getTag();
break;
case 2:
fansHolder = (FansHolder) convertView.getTag();
break;
case 3:
favouriteHolder = (FavouriteHolder) convertView.getTag();
break;
}
}
//设置资源
switch(type)
{
case 0:
publishHolder.userPhoto.setBackgroundResource(R.drawable.test_head1);
publishHolder. name.setText(mDatas.get(position).getName());
publishHolder. location.setText(mDatas.get(position).getLocation());
publishHolder. time.setText(mDatas.get(position).getTime());
publishHolder.price.setText(mDatas.get(position).getPrice());
publishHolder. shareCount.setText(mDatas.get(position).getShareCount());
publishHolder. commentCount.setText(mDatas.get(position).getCommentCount());
publishHolder. title.setText(mDatas.get(position).getTitle());
publishHolder. content.setText(mDatas.get(position).getContent());
publishHolder.img1.setBackgroundResource(R.drawable.test_head1);
publishHolder.img2.setBackgroundResource(R.drawable.test_head2);
publishHolder.img3.setBackgroundResource(R.drawable.test_head3);
publishHolder.img4.setBackgroundResource(R.drawable.test_head4);
publishHolder.img5.setBackgroundResource(R.drawable.test_head5);
publishHolder.img6.setBackgroundResource(R.drawable.test_head6);
break;
case 1:
interestHolder.userPhoto.setImageResource(R.drawable.test_head);  
interestHolder.name.setText(mDatas.get(position).getUserName());
interestHolder.location.setText(mDatas.get(position).getArea());
interestHolder.job.setText(mDatas.get(position).getJob());
break;
case 2:
fansHolder.userPhoto.setImageResource(R.drawable.test_head);  
fansHolder. name.setText(mDatas.get(position).getUserName());
fansHolder. location.setText(mDatas.get(position).getArea());
fansHolder. job.setText(mDatas.get(position).getJob());
break;
case 3:
favouriteHolder.userPhoto.setBackgroundResource(R.drawable.test_head1);
favouriteHolder. name.setText(mDatas.get(position).getName());
favouriteHolder. location.setText(mDatas.get(position).getLocation());
favouriteHolder. time.setText(mDatas.get(position).getTime());
favouriteHolder. shareCount.setText(mDatas.get(position).getShareCount());
favouriteHolder. commentCount.setText(mDatas.get(position).getCommentCount());
favouriteHolder. title.setText(mDatas.get(position).getTitle());
favouriteHolder. content.setText(mDatas.get(position).getContent());

favouriteHolder.img1.setBackgroundResource(R.drawable.test_head1);
favouriteHolder.img2.setBackgroundResource(R.drawable.test_head2);
favouriteHolder.img3.setBackgroundResource(R.drawable.test_head3);
favouriteHolder.img4.setBackgroundResource(R.drawable.test_head4);
favouriteHolder.img5.setBackgroundResource(R.drawable.test_head5);
favouriteHolder.img6.setBackgroundResource(R.drawable.test_head6);
break;
}
// bindView(position, v); 
return convertView;
}


class PublishHolder {
//--------------------发布--------------------
CircularImage userPhoto;
TextView name;
TextView location;
TextView time;
TextView price;
TextView shareCount;
TextView commentCount;
TextView title;
TextView content;
LinearLayout img_LinearLayout1;
ImageView img1;
ImageView img2;
ImageView img3;
LinearLayout img_LinearLayout2;
ImageView img4;
ImageView img5;
ImageView img6;
};
class InterestHolder {
//--------------------关注--------------------
CircularImage userPhoto;
TextView name;
TextView location;
TextView job;
//添加关注按钮
TextView addInterest;

};
class FansHolder {
//--------------------粉丝--------------------
CircularImage userPhoto;
TextView name;
TextView location;
TextView job;
//添加关注按钮
TextView addInterest;
};
class FavouriteHolder {
//--------------------收藏--------------------
CircularImage userPhoto;
TextView name;
TextView location;
TextView time;
TextView shareCount;
TextView commentCount;
TextView title;
TextView content;
LinearLayout img_LinearLayout1;
ImageView img1;
ImageView img2;
ImageView img3;
LinearLayout img_LinearLayout2;
ImageView img4;
ImageView img5;
ImageView img6;
};

}


//----------------------------------------

activity 中切换布局:

personalCenterAdapter.setType(0);
personalCenterAdapter.refreshData(mDataForPublish);


红色字体的地方一定要特别注意:不然会出现异常:

02-10 13:13:29.902: E/AndroidRuntime(20661): java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
02-10 13:13:29.902: E/AndroidRuntime(20661): at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6705)

原因可以参考http://blog.csdn.net/wulianghuan/article/details/16946019

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值