有时候我们需要做一个类似下图的列表,如下,每隔几个item就需要一个标签来区分不同的数据类型,这个时候就需要用到getItemViewType()来做区分了
BaseAdapter中有2个方法:
1.getItemViewType(int position);//得到当前item的类型
2.getViewTypeCount()//得到不同的item的总数,下面图上的类型是2种
//下面贴一段代码(因为完整的项目需要关系很多代码,所以只贴Adapter的代码)
package com.yy.ent.mobile.ui.live.livelist;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.yy.ent.cherry.Cherry;
import com.yy.ent.cherry.ext.image.CircleImageView;
import com.yy.ent.cherry.ext.image.ImageConfig;
import com.yy.ent.cherry.ext.image.ImageManager;
import com.yy.ent.cherry.ext.image.RecycleImageView;
import com.yy.ent.mobile.entity.livelist.Lives;
import com.yy.ent.mobile.ui.base.XBaseAdapter;
import com.yy.ent.mobile.ui.live.widget.RayRelative;
import com.yy.ent.mobile.ui.personal.OthersActivity;
import com.yy.ent.mobile.ui.util.NavigationUtils;
import com.yy.ent.mobile.ui.util.StringUtils;
import com.yy.ent.mobile.ui.util.ViewHelper;
import com.yy.ent.show.ui.R;
public class ShowLiveAdapter extends XBaseAdapter<Lives> {
public static final String MOBILE_LIVE_ITEM_CLICK = "mobile_live_item_click";
private static final int VIEW_COUNT = 2;
public static final int LIVE_HEADER = 0;
public static final int LIVE_CONTENT = 1;
public static final int HEADER_TAG = 110;
private String TAG = ShowLiveAdapter.class.getSimpleName();
public ShowLiveAdapter(Context context, int resource) {
super(context, resource);
}
@Override
public int getItemViewType(int position) {
if (list.get(position).status == HEADER_TAG) {
return LIVE_HEADER;
} else {
return LIVE_CONTENT;
}
}
@Override
public int getViewTypeCount() {
return VIEW_COUNT;
}
@Override
public View getYView(int i, View itemView, ViewGroup viewGroup) {
ViewHolder holder = null;
int type = getItemViewType(i);
if (itemView == null) {
switch (type) {
case LIVE_HEADER:
TextView hot = new Te