怎么动态设置recyclerview的item

怎么动态设置recyclerview的item,第1张

大家都知道listview可以使用动态改变item布局

@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日

去首页

看看更多热门内容


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11475707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存