/**
* 个人这主页的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;
};
* 个人这主页的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