@Override
public int getItemViewType(int position) {
return type
}
@Override
public int getViewTypeCount() {
return number
}
当然recyclerview同样可以动态改变item布局
1、继承 RecyclerView.Adapter<RecyclerView.ViewHolder>
public class CommentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
2、重写 getItemViewType(int position)
/**
* 决定元素的布局使用哪种类型
*
* @param position 数据源的下标
* @return 一个int型标志,传递给onCreateViewHolder的第二个参数 */
@Override
public int getItemViewType(int position) {
return mDatas.get(position).getType()
}
3、在 onCreateViewHolder(ViewGroup parent, int viewType) 判断使用哪一种布局
/** * 渲染具体的ViewHolder
*
* @param parent ViewHolder的容器
* @param viewType 一个标志,我们根据该标志可以实现渲染不同类型的ViewHolder
* @return
*/
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.e("terry", "viewType = " + viewType)
View view = null
if (viewType == COMMENT_FIRST) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_main_first, parent, false)
return new CommentFirstHolder(view)
} else if (viewType == COMMENT_SECOND) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_main_second, parent, false)
return new CommentSecondHolder(view)
}
return null
}
4、最后在onBindViewHolder(RecyclerView.ViewHolder holder, int position)绑定数据
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof CommentFirstHolder) {
......
} else if (holder instanceof CommentSecondHolder) {
......
}
}
5、定义对应的ViewHolder类
//第一个ViewHolder
public class CommentFirstHolder extends RecyclerView.ViewHolder {
public CommentFirstHolder(View itemView) {
super(itemView)
}
}
//第二个ViewHolder
public class CommentSecondHolder {
public CommentSecondHolder(View itemView) {
super(itemView)
}
}
这样就可以设置动态布局了,另外监听器需要自己定义回调接口,这里就不赘述了。
文/疯狂的米老鼠(简书作者)
原文链接:http://www.jianshu.com/p/9165249da2fa
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
第一步:创建多个item布局:
我们要处理列表载多个item就要创建多个item布局, 不同的item布局就代表一个类型,因此可以根据具体情况而创建具体的item布局。
第二步:
实现类MoreItemAdapter继承BaseAdapter:
我们在类MoreItemAdapter里面初始化了多个item标识常量,并在MoreItemAdapter的带参构造方法中传递item类型数据。
第三步:
重写getViewTypeCount()和 getItemViewType(int position)方法:
getViewTypeCount()为返回类型的个数 ,getItemViewType处理类型并返回一个int类型的标识。(注:必须重写,否则处理item类型时会出现空指针异常)
第四步:
重写getView()方法:
在这里方法通过getItemViewType(position)方法处理加载item布局并初始化不同item里的控件,并运用ViewHolder机制来进行复用item项。
第五步:
显示数据:
处理完item布局之后同样根据getItemViewType(position)方法来显示不同item类型的数据。这里可以if语句判断也可以用switch分支语句。
第六步
设置数据:
在MainActivity中实例化列表控件、实例化MoreItemAdapter适配器并设置item类型数据,设置适配器adapter。这里就完成了处理列表加载多个不同item的问题。
找不到好的代加工厂?看这里!实力厂家,可按需定制!
精选推荐
广告
详解ListView中多种item的实现方式
2下载·0评论
2021年1月20日
listview支持多种item显示处理
341阅读·0评论·1点赞
2016年9月2日
005-Android-UI进阶习题
1233阅读·0评论·1点赞
2021年4月10日
android 一个页面内 多个listview的实现
1.5W阅读·11评论·0点赞
2012年10月18日
android listview 选择多个item,Android ListView存在多个item样式的处理方法
173阅读·0评论·0点赞
2021年5月28日
使用listview时,每一页只显示一条数据
196阅读·0评论·0点赞
2022年4月21日
狂暴之翼手游
精选推荐
广告
ListView与条目显示问题解决
135阅读·0评论·0点赞
2013年6月14日
ListView一行显示两个Item并实现单选功能
6824阅读·1评论·5点赞
2017年7月18日
listView 多条目展示
2754阅读·0评论·0点赞
2016年10月25日
Android开发-listview实现多条目展示
1034阅读·0评论·2点赞
2018年12月12日
Android--------ListView多条目展示数据
2648阅读·0评论·2点赞
2017年6月8日
ListView多条目的展示
375阅读·0评论·0点赞
2017年7月25日
Android之ListView展示多类型的条目
2767阅读·0评论·1点赞
2016年8月14日
ListView展示不同类型条目的实现方法
3474阅读·0评论·0点赞
2014年12月28日
ListView多条目完美复用
38下载·4评论
2013年9月12日
listview多条目适配器
3下载·0评论
2017年12月10日
ListView多条目展示
7下载·0评论
2017年5月1日
复杂的ListView,多条目加载
1527阅读·0评论·0点赞
2016年11月23日
去首页
看看更多热门内容
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)