zoukankan      html  css  js  c++  java
  • 封装的多功能多效果的RecyclerView

    开源界有一句很有名的话叫“不要重复发明轮子”,当然,我今天的观点不是要反驳这句话,轮子理论给我们的开发带来了极大的便利,。但我想说的是,既要会用轮子,也要知道轮子怎么造,必要的时候,自己也要造轮子(想要找到一个完全满意的轮子还是不大容易的)。

     原创作品,未经允许禁止转载,转载请注明来自:http://www.cnblogs.com/jiangbeixiaoqiao/

    今天我们来聊聊RecyclerView,大家肯定都不陌生,它被创造出来的使命就是用来代替ListView,GridView等滑动组件的。造轮子系列 - 封装RecyclerView, 立志打造为一个非常实用的开发工具 , 添加一些开发中常用的功能 , 例如下拉刷新, 分页, 自动加载 , 加载错误等等 ; 更多的新功能将会逐步添加...

    对RecyclerView的一个封装,添加一些实用的功能。

     效果图与示例APK

    主要功能:

    • 下拉刷新,使用默认的下拉刷新控件

    • 页面加载数据过程中显示LoadingView

    • 页面加载数据出错时显示ErrorView

    • 页面数据大小为0时显示EmptyView

    • 自动加载,当页面到底部或者当前页面显示不全时,自动加载其余数据,并显示LoadMoreView

    • 加载更多时出错自动停止加载更多,并显示LoadMoreFailedView

    • 没有更多数据加载时,显示NoMoreView

    • 支持Header View和Footer View

    • 除下拉刷新以外,其余View均可自定义

    • 支持多种Item类型

    • 支持GridLayout和瀑布流

    原创作品,未经允许禁止转载,转载请注明来自:http://www.cnblogs.com/jiangbeixiaoqiao/

    1.添加Gradle依赖



    2.在布局文件中添加PracticalRecyclerView

    3.添加代码

    首先定义一个POJO类, 并实现ItemType接口:

    这里返回的item type 表示是item的类型, 如果列表只有一种类型的item, 那么返回0就可以了, 如果有多种item, 则对应类型的item返回对应类型的item type. 这里简单的返回0 .

    接着定义ViewHolder, 继承自AbstractViewHolder, 并提供泛型参数:

    在Viewholder中进行View的创建和绑定, 如果需要绑定按钮的单击事件或者其他的一些事件, 在此处进行再好不过了.

     原创作品,未经允许禁止转载,转载请注明来自:http://www.cnblogs.com/jiangbeixiaoqiao/

    接下来创建Adatper, 继承自AbstractAdapter, 并提供泛型参数:

    adapter 类中非常简洁, 只需要在onNewCreateViewHolder()中创建ViewHolder, 在onNewBindViewHolder()中调用viewholder的setData()即可, 这样adapter和viewholder的逻辑就分离开来,互不干扰.

    最后,在Activity或者Fragment中进行最后的配置:

    4.添加Header 和 Footer

    要添加Header和Footer, 可以选择实现SectionItem接口, 或者继承SectionItemImpl, 如下所示:

    这里使用了一个开源轮播库BGABanner当作Header, 该库的链接在此: BGAbanner

    接着调用Adapter的addHeader() 或者addFooter()方法将该Header或Footer添加到adapter中:

    5.Configure 接口和ConfigureAdapter类

    当默认的属性不能满足需求时, 可以自定义layout 并设置为PracticalRecyclerView的属性:

    原创作品,未经允许禁止转载,转载请注明来自:http://www.cnblogs.com/jiangbeixiaoqiao/

    若需要对该View进行设置, 就需要用到Configure接口, Configure接口定义了以下方法,分别对属性中设置的View进行设置:

    ConfigureAdapter是对Configure接口的一个包装类, 可以选择实现其中的某一些方法,从而设置对应的View:

  • 相关阅读:
    junit spring
    DFU协议介绍
    USB枚举过程
    触摸板单点描述符
    Linux下使用codeblocks交叉编译ARM-LINUX-GCC程序
    树莓派 原理图 摄像头接口定义
    usb描述符详细讲解
    常用的算法思想
    STM32f407 DCMI方式驱动 OV2640
    linux echo命令-转
  • 原文地址:https://www.cnblogs.com/jiangbeixiaoqiao/p/5949903.html
Copyright © 2011-2022 走看看