第一步: 需要重写Adapter的 getViewTypeCount() 方法,该方法返回的是int值,为总共是几个布局。
返回的为2种布局。
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}
还需要重写getItemViewType(int position) 方法。
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
group = groups.get(position);
if ("common_template".equals(group.getTemplate_type())) {
return 0;
} else {
extra = group.getExtra();
advisors = extra.getAdvisor();
return 1;
}
}
第二步:
在getview中需要进行判断是哪种布局的类型
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
group = groups.get(position);
ViewHodlerSquare square = null;
ViewHodlerRound round = null;
int type = getItemViewType(position);
if (convertView == null) {
switch (type) {
case 0:
convertView = View.inflate(context,
R.layout.activity_frame_item_square, null);
square = new ViewHodlerSquare();
square.imageTvIcon = (ImageView) convertView
.findViewById(R.id.tv_icon);
square.imageTvImg = (ImageView) convertView
.findViewById(R.id.iv_TVimg);
square.textPlaystatus = (TextView) convertView
.findViewById(R.id.tv_playstatus);
square.textWatchnum = (TextView) convertView
.findViewById(R.id.tv_watchnum);
square.textTvname = (TextView) convertView
.findViewById(R.id.tv_name);
square.textTvtime = (TextView) convertView
.findViewById(R.id.tv_time);
convertView.setTag(square);
break;
case 1:
convertView = View.inflate(context,
R.layout.activity_frame_item_round, null);
round = new ViewHodlerRound();
round.imageBkg = (ImageView) convertView
.findViewById(R.id.activity_frame_bkg);
round.layoutTeacher = (LinearLayout) convertView
.findViewById(R.id.linear_teacher);
round.textContent1 = (TextView) convertView
.findViewById(R.id.tv_content1);
round.textContent2 = (TextView) convertView
.findViewById(R.id.tv_content2);
round.textContent3 = (TextView) convertView
.findViewById(R.id.tv_content3);
round.textPersonNumSee = (TextView) convertView
.findViewById(R.id.tv_person_num_see);
round.textTimeLable = (TextView) convertView
.findViewById(R.id.tv_date_time);
convertView.setTag(round);
break;
}
} else {
switch (type) {
case 0:
square = (ViewHodlerSquare) convertView.getTag();
break;
case 1:
round = (ViewHodlerRound) convertView.getTag();
break;
}
}
// 填充内容
switch (type) {
case 0:
imageDownloader.download(group.getS1_tag(), square.imageTvIcon);
imageDownloader.download(group.getS3_bgimg(), square.imageTvImg);
square.textPlaystatus.setText(group.getS1_tagname());
square.textWatchnum.setText(group.getS4_numwatch());
square.textTvname.setText(group.getS5_gtitle());
square.textTvtime.setText(group.getS5_timelabel());
break;
case 1:
imageDownloader.download(group.getS3_bgimg2(), round.imageBkg);
if (flag) {
android.widget.LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
layoutParams.leftMargin = 8;
layoutParams.weight = 1;
for (int i = 0; i < advisors.size(); i++) {
advisor = advisors.get(i);
ImageView imageTeacher = new ImageView(context);
imageTeacher.setLayoutParams(new LayoutParams(80, 80));
imageTeacher.setLayoutParams(layoutParams);
downloadImage(advisors.get(i).getAvatar().getUrl(),
imageTeacher);
imageTeacher.setOnClickListener(new MyClickListener(advisor
.getId()));
round.layoutTeacher.addView(imageTeacher);
}
}
return convertView;
}