有时候我们需要做一个类似下图的列表,如下,每隔几个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:

在Android开发中,当需要在ListView中创建带有标签区分不同数据类型的列表时,getItemViewType()方法至关重要。该方法用于确定每个item的视图类型,而getViewTypeCount()则返回不同视图类型的数量。在实现过程中,由于错误地定义了ItemViewType的值,导致出现异常。异常信息主要出现在ListView的onMeasure()方法中。此博客旨在提醒开发者避免此类错误,确保ListView正确显示各类item。
最低0.47元/天 解锁文章
5168

被折叠的 条评论
为什么被折叠?



