简洁/易用/灵活/高效->RecyclerView适配器封装

我的地址

项目Github 地址

有问题能够直接留言或 联系QQ:1079569023git


基本写法存在问题

  1. 无论是ListView仍是RecyclerView,大多数的基本写法都是写适配器,一堆Adapter,喜欢复制粘贴的内容更是混乱,很是容易出错
  2. 部分功能代码写在适配器中,某些功能不能复用,冗余度太高,免不了会复制粘贴
  3. 若是遇到复杂的列表时候(好比聊天界面),Adapter的内容更是爆炸
  4. 问题就是复用性误差,代码冗余度高,可读性很差,容易出错.

库可以解决的问题

  1. 主要解决代码复用性问题,代码很是简洁,基础流程固定
  2. 这是一个组件化思惟(相似自定义View),给定一个数据源,组件来管理UI的展现和部分业务(避免过于复杂的业务,影响绘制效率)。
  3. 通用性的封装,只有1个RecyclerAdapter适配器,无需增长其余xxxAdapter;
  4. RecyclerView的展现一项Item对应一个xxxDataHolder,无需设置ViewType 任意DataHolder的组合便可完成任意复杂页面的拼接(好比复杂的首页,聊天界面)

项目介绍

主要是对代码调用流程和固定代码的封装github

库的核心只有2个类bash

  1. RecyclerAdapter:通用的一个适配器
  2. RecyclerDataHolder:通用的数据包装类
  3. 还有几个很经常使用的通用功能类,能够忽略

使用简介组件化

  1. 第1步:只有一个RecyclerAdapter适配器设置给RecyclerView (代码固定)布局

  2. 第2步:主要代码就是建立ReyclerView展现的一项fetch

xxxItemDataHolder类继承RecyclerDataHolder的实现方法便可 (写法固定)
 xxxItemDataHolder 须要实现方法三个方法 
 
 getItemViewLayoutId: 展现的布局id (写法固定)
 onCreateViewHolder: 设置ViewHolder,可自定义或直接new RecyclerViewHolder() (写法固定)
 onBindViewHolder: 给ViewHolder设置数据 (变化的UI展现和业务处理)
复制代码
  1. 第3步:建立数据源 List 并设置给RecyclerAdapter便可(写法固定)

库中的其余几个功能类优化

  1. RecyclerCallBack 经常使用事件回调接口 (不少都在ViewHolder内部完成)
  2. RecyclerViewHolder 添加了几个经常使用方法
  3. ItemSpaceDecoration 用来设置RecyclerView的行间距
  4. StickRecyclerAdapter 浮动标题设置
  5. OnPageScrollBottomListener 滚动到底部监听

RecyclerView优化技巧spa

  1. LinearLayoutManager经过setInitialPrefetchItemCount(int num)方法设置item预加载的数量
  2. item 高度固定,设置setHasFixedSize(true)
  3. 必定要避免过于复杂的onBindViewHolder流程,简化这里的业务和减小new操做

代码已在多个项目中使用,已改版屡次,目前功能稳定,抽出来远程库,方便复用。具体使用,能够下载代码,运行里面的Demo便可。code

相关文章
相关标签/搜索