代码地址如下:
http://www.demodashi.com/demo/12318.html

StatusLayoutManager


切换不同的数据状态布局,包含加载中、空数据和出错状态。

github地址:https://github.com/Bakumon/StatusLayoutManager

特征

  1. 不会增加布局层数
  2. 提供一套可配置的默认状态布局
  3. 布局懒加载
  4. 重试按钮统一回调
  5. 支持自定义状态布局

预览

下载 demo 体验

下载

  1. 在项目的 build.gradle 中添加:
allprojects {repositories {...maven { url 'https://jitpack.io' }}
}
  1. 添加依赖
dependencies {compile 'com.github.Bakumon:StatusLayoutManager:1.0.1'
}

使用

快速使用

创建 StatusLayoutManager 对象:

statusLayoutManager = new StatusLayoutManager.Builder(recyclerView)// 设置重试事件监听器.setOnStatusChildClickListener(new DefaultOnStatusChildClickListener() {@Overridepublic void onEmptyChildClick(View view) {}@Overridepublic void onErrorChildClick(View view) {}}).build();

在合适的时机显示对应的状态布局:

// 加载中
statusLayoutManager.showLoadingLayout();
// 空数据
statusLayoutManager.showEmptyLayout();
// 加载失败
statusLayoutManager.showErrorLayout();
// 加载成功,显示原布局
statusLayoutManager.showSuccessLayout();

以上可以满足大多数场景。

配置默认布局

以下 API 提供修改默认布局的方法,具体说明见注释。

statusLayoutManager = new StatusLayoutManager.Builder(recyclerView)// 设置默认加载中布局的提示文本.setDefaultLoadingText("l拼命加载中...")// 设置默认空数据布局的提示文本.setDefaultEmptyText("空白了,哈哈哈哈")// 设置默认空数据布局的图片.setDefaultEmptyImg(R.mipmap.ic_launcher)// 设置默认空数据布局重试按钮的文本.setDefaultEmptyRetryText("retry")// 设置默认空数据布局重试按钮的文本颜色.setDefaultEmptyRetryTextColor(getResources().getColor(R.color.colorAccent))// 设置默认空数据布局重试按钮是否显示.setDefaultEmptyRetryVisible(false)// 设置默认出错布局的提示文本.setDefaultErrorText(R.string.app_name)// 设置默认出错布局的图片.setDefaultErrorImg(R.mipmap.ic_launcher)// 设置默认出错布局重试按钮的文本.setDefaultErrorRetryText("重试一波")// 设置默认出错布局重试按钮的文本颜色.setDefaultErrorRetryTextColor(getResources().getColor(R.color.colorPrimaryDark))// 设置默认出错布局重试按钮是否显示.setDefaultErrorRetryVisible(true)// 设置布局背景,包括加载中、空数据和出错布局.setDefaultLayoutsBackgroundColor(Color.WHITE).build();

自定义默认布局

statusLayoutManager = new StatusLayoutManager.Builder(recyclerView)// 设置加载中布局.setLoadingLayout(inflate(R.layout.layout_loading))// 设置空数据布局.setEmptyLayout(inflate(R.layout.layout_empty))// 设置出错布局.setErrorLayout(inflate(R.layout.layout_error))// 设置加载中布局.setLoadingLayout(R.layout.layout_loading)// 设置空数据布局.setEmptyLayout(R.layout.layout_empty)// 设置出错布局.setErrorLayout(R.layout.layout_error)// 设置空数据布局重试按钮 ID.setEmptyRetryID(R.id.tv_empty)// 设置出错布局重试按钮 ID.setErrorRetryID(R.id.tv_error).build();

显示自定义状态布局

statusLayoutManager#showCustomLayout()有几个重载方法,下面以参数最多的为例介绍:

/*** 显示自定义状态布局** @param customLayoutID 自定义布局 ID* @param clickViewID        重试按钮 ID* @return 自定义状态布局*/
statusLayoutManager.showCustomLayout(R.layout.layout_custome, R.id.tv_customer, R.id.tv_customer1);

其中 clickViewID 参数,表示想要添加点击事件的 View 的 id。

点击监听

statusLayoutManager = new StatusLayoutManager.Builder(recyclerView)// 设置重试事件监听器.setOnStatusLayoutClickListener(new OnStatusLayoutClickListener() {@Overridepublic void onEmptyChildClick(View view) {}@Overridepublic void onErrorChildClick(View view) {}@Overridepublic void onCustomerChildClick(View view) {}}}).build();

也可以使用 OnStatusLayoutClickListener 默认的实现类,像下面这样:

statusLayoutManager = new StatusLayoutManager.Builder(recyclerView)// 设置重试事件监听器.setOnStatusChildClickListener(new DefaultOnStatusChildClickListener() {@Overridepublic void onEmptyChildClick(View view) {}@Overridepublic void onErrorChildClick(View view) {}}).build();

项目结构图

切换不同的数据状态布局,包含加载中、空数据和出错状态,可自定义状态布局

代码地址如下:
http://www.demodashi.com/demo/12318.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

切换不同的数据状态布局,包含加载中、空数据和出错状态,可自定义状态布局相关推荐

  1. 一个简单的页面加载管理类(包含加载中,加载失败,数据为空,加载成功)

    在最近公布的比赛框架中,发现了页面加载管理类,觉得挺有用的,所以做个简单的笔记. 什么是页面加载管理类呢?(大佬可直接跳过翻看实现过程) 如果能有这个问题,那么很好,哈哈哈,你和我一样,刚开始都挺疑惑 ...

  2. Android列表分页功能的实现,往下拉时刷新数据(显示正在加载中)

    1.需要在AndroidManifest.xml清单文件中获取InterNet权限 2.重写ListView控件(创建RefreshListView.java,继承自ListView) package ...

  3. Android Listview滑动时不加载数据,停下来时加载数据,让App更优

    转载:http://blog.csdn.net/yy1300326388/article/details/45153813 数据源配置(Adapter) package com.zhengsongla ...

  4. 微信小程序页面在调取到接口数据之前是加载中状态

    首先,我们先建一个文件夹,文件目录如下: wxml代码如下: <template name="loading"><view class="loading ...

  5. 上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...

    现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据 每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成 1.添加data变量 编辑rec ...

  6. UE4加载osgb倾斜摄影数据

    在UE4引擎中动态加载调度osgb倾斜摄影数据,利用多线程动态加载瓦片数据,可以顺畅加载海量的瓦片数据.最大可加载200G以上数量级. Unity3D加载osgb倾斜摄影数据:Unity3d(UE4) ...

  7. v-loading加载中

    一.整页加载 使用v-loading在接口为请求到数据之前,显示加载中,直到请求到数据后消失. //全局loading <template><div v-loading=" ...

  8. activity中fragment 返回键不退出_优雅地处理加载中(loading),重试(retry)和无数据(empty)等...

    LoadSir是一个高效易用,低碳环保,扩展性良好的加载反馈页管理框架,在加载网络或其他数据时候,根据需求切换状态页面,可添加自定义状态页面,如加载中,加载失败,无数据,网络超时,占位图,登录失效等常 ...

  9. 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)

    <template><div class="sg-page-body"><div class="sg-list"><v ...

最新文章

  1. Association Rules 关联规则
  2. 如何编译ReactNative示例程序Examples
  3. php动态数组的存储过程,PHP数组作为存储过程的输入
  4. Intellij IDEA 中无法下载 Cloud Toolkit 问题解决
  5. Could not load file or assembly 'System.Web.Extensions
  6. FTP Active Passive
  7. 共享内存 传一个类指针_共享内存介绍:Shared Memory
  8. c++future 配合httplib post 高级技巧
  9. SQL 分页查询的四种方法
  10. python yield原理_从python的yield说起
  11. ubuntu下卸载cuda8.0,和安装cuda9.0,cudnn7.0,tensorflow-gpu=1.8
  12. android 结束if循环_简单探究Android平台下' if ' 语句条件判断耗时情况
  13. MongoDB副本集配置系列二:配置MongoDB副本集
  14. 数据库的几个基本概念
  15. php spider 参数详解,利用phpspider爬取网站数据
  16. keepalived高可用
  17. 备案后可以改服务器信息吗,域名备案后可以更改服务器
  18. 一根均线选股法_“傻瓜式炒股法”——20日均线一根均线买入法,简单很实用!...
  19. 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
  20. 再添荣誉!青软集团获评「山东省科技小巨人企业」称号

热门文章

  1. pythonyaml参数_使用python检查yaml配置文件是否符合要求
  2. STM32F103_步进电机
  3. 单片机中volatile的应用
  4. python之路day9_python之路day9作业
  5. feign post 传递空值_http中post和get的区别和联系
  6. 【C语言】文件操作及输入输出格式(文件常用的库函数)
  7. html5饼图的制作方法,html5制作饼图
  8. 【LeetCode】剑指 Offer 16. 数值的整数次方
  9. 软工实践(二)——构建之法读后感
  10. yii2解决资源插件路径不对应问题