BRVAH(BaseRecyclerViewAdapterHelper)多样式的使用
这篇文章需要BRVAH的基础,不是教程,只是提供方案和思路
不得不说BRVAH真的算是一个很不错Recyclerview的adapter
里面用到了一些封装的方法,很好,虽然有些还没用过,但是用过的都说好
网上教程很多,尤其是 官方指南 教程写的更是全面,大多数常用都可以在里面找到
下面直接写我实现的功能
注意是一个RecyclerView实现!!!
注意是一个RecyclerView实现!!!
注意是一个RecyclerView实现!!!
实现方式大概有几种,Recyclerview嵌套是最方便的,如果这样的话,大概我也就不写这篇文章了
现在实现方式打算采用一个RecyclerView实现,先观察上图,实际上有三种Type,(贡献排行算是一种)采用传统的Adapter我们需要自己定义Type,然后去根据不同Type bind不同的layout,下面写一下如何通过Brvah实现
里面用到了一个设置不同Type的方式 多布局代理, GitHub多种布局代理 详情移步这里
一:数据实体
public class LibraryBean {public static final int Type_Book = 1;//图书public static final int Type_Rank = 2;//排行public static final int Type_Header = 3;//分割线...................//省略数据}
我们需要自己定义Type,这样我们的Adapter才能type-----layout对应上
二:Adapter
public class LibraryAdapter extends BaseQuickAdapter<LibraryBean.ListBean, BaseViewHolder> {private int size;public LibraryAdapter(@Nullable List<LibraryBean.ListBean> data, int size) {super(data);this.size = size;//这里获取Type类型setMultiTypeDelegate(new MultiTypeDelegate<LibraryBean.ListBean>() {@Overrideprotected int getItemType(LibraryBean.ListBean listBean) {return listBean.getItemType();}});//这里添加Type类型getMultiTypeDelegate().registerItemType(LibraryBean.Type_Book, R.layout.item_book).registerItemType(LibraryBean.Type_Rank, R.layout.item_rank).registerItemType(LibraryBean.Type_Header, R.layout.header_view);}@Overrideprotected void convert(BaseViewHolder helper, LibraryBean.ListBean item) {//获取Type类型switch (helper.getItemViewType()) {case LibraryBean.Type_Book://填充书籍数据initBook(helper, item);break;case LibraryBean.Type_Rank://填充排行数据initRank(helper, item);break;case LibraryBean.Type_Header://填充分割线break;}}}
上面的注释写的相对来说比较详细了…
三:1/1和1/2显示处理
网上这方面的教程还是比较详细的…一搜一大把,毕竟这不是重点
..................省略数据final GridLayoutManager manager = new GridLayoutManager(this, 2);recyclerView.setLayoutManager(manager);LibraryAdapter libraryAdapter = new LibraryAdapter(list, size);libraryAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {@Overridepublic int getSpanSize(GridLayoutManager gridLayoutManager, int position) {//是1/2 和1/1的区别 占一行 还是1/2return list.get(position).getItemType() == LibraryBean.Type_Book ? 1 : 2;}});recyclerView.setAdapter(libraryAdapter);//分割线recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {@Overridepublic void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {super.getItemOffsets(outRect, view, parent, state);GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams();int spanSize = layoutParams.getSpanSize();int spanIndex = layoutParams.getSpanIndex();if (spanSize == manager.getSpanCount()) {outRect.top = 20;}}});
BRVAH(BaseRecyclerViewAdapterHelper)多样式的使用相关推荐
- BRVAH官方使用指南(持续更新)--BaseRecyclerViewAdapterHelper
项目地址:GithuGitHub BaseRecyclerViewAdapterHelper 官方网站:www.recyclerview.org BRVAH是一个强大的RecyclerAdapter框 ...
- BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合,Recyclerview如何在Databinding中快捷、方便地使用(一)
BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合(其二) BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合(其三 ...
- BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合,Recyclerview如何在Databinding中快捷、方便地使用(三)
BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合(其一) BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合(其二 ...
- BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合,Recyclerview如何在Databinding中快捷、方便地使用(二)
BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合(其一) BRVAH的BaseRecyclerViewAdapterHelper与MVVM模式优雅结合(其三 ...
- 搭配BRVAH高效使用RecyclerView
学习目标 熟悉使用 BRVAH 解决对应各种 adapter 需求 概述 BRVAH 是 Github 上的一个很棒的开源项目,主要作用是帮助我们更加高效的使用 Recyclerview 控件,处理项 ...
- BaseRecyclerViewAdapterHelper: 灵活强大的循环适配器
BRVAH:灵活强大的循环适配器. 官方网站:http://www.recyclerview.org/ BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它 ...
- BaseRecyclerViewAdapterHelper用法抄袭
前言 主要声明三点 第一: 关于本文的BaseRecyclerViewAdapterHelper用法,自然是转载的官方原文.或许有的人会很疑惑原文写的那么清除那么完善,为什么我还要写一篇几乎一模一样的 ...
- BRVAH源码分析(1)
前言 此文章由BRVAH开发者angels分享给大家,目的是为了让BRVAH的使用者不仅会使用,还懂其原理.这样表面上比较慢,实际这一切都是值得的,懂了原理出了问题可以快速解决问题.「慢慢来,比较快. ...
- Android RecyclerView多样式列表实践指南
前言 在日常的开发中我们经常会在一个列表数据中展示多种样式. 比如一个新闻列表,顶部是一个焦点Banner,然后是展示文章列表,文章中间可能插入某个图片广告,底部是一个加载更多/没有更多数据的加载状态 ...
最新文章
- 计算机视觉这篇就够了
- nginx反向代理https站点
- 【NLP】好资源!近 20 万本 txt 书籍的语料库,可用于 GPT 模型训练和语义分析...
- android 上下扫描动画,Android扫描雷达动画
- wxWidgets:wxToolBar 示例
- oracle重新恢复数据库,重新安装oracle根据原数据文件恢复数据库
- linux 学习笔记 显示压缩文件 gong.zip 的文件内容
- Python异常处理try...except...finally raise assert
- linux vim命令及使用,极大提升使用linux的舒适程度
- 11.8 Ext.util.Event.fire(): Attempting to fire “click“ event on destroyed 问题分析与解决
- access性别字段_12、ACCESS数据表的筛选(ACCESS图解操作系列)
- DCDC基础(2)--BUCK芯片的各个引脚是什么意思?带你深入了解BUCK电源的稳压原理
- 爬虫出现Forbidden by robots.txt
- Flutter实战-请求封装(五)之Isolate线程改造
- Java的字面量和符号引用
- 当 webpack 遇上 symlink
- PHP 开发社区微信服务号实战图解
- 对数损失和交叉熵损失
- 【8086汇编基础】05--常用函数库文件--emu8086.inc
- 《浪潮之巅》第三版读书总结--了解过去,才能把握未来(三)