切换不同的数据状态布局,包含加载中、空数据和出错状态,可自定义状态布局
代码地址如下:
http://www.demodashi.com/demo/12318.html
StatusLayoutManager
切换不同的数据状态布局,包含加载中、空数据和出错状态。
github地址:https://github.com/Bakumon/StatusLayoutManager
特征
- 不会增加布局层数
- 提供一套可配置的默认状态布局
- 布局懒加载
- 重试按钮统一回调
- 支持自定义状态布局
预览
下载 demo 体验
下载
- 在项目的
build.gradle
中添加:
allprojects {repositories {...maven { url 'https://jitpack.io' }}
}
- 添加依赖
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大师发表,拒绝转载,转载需要作者授权
切换不同的数据状态布局,包含加载中、空数据和出错状态,可自定义状态布局相关推荐
- 一个简单的页面加载管理类(包含加载中,加载失败,数据为空,加载成功)
在最近公布的比赛框架中,发现了页面加载管理类,觉得挺有用的,所以做个简单的笔记. 什么是页面加载管理类呢?(大佬可直接跳过翻看实现过程) 如果能有这个问题,那么很好,哈哈哈,你和我一样,刚开始都挺疑惑 ...
- Android列表分页功能的实现,往下拉时刷新数据(显示正在加载中)
1.需要在AndroidManifest.xml清单文件中获取InterNet权限 2.重写ListView控件(创建RefreshListView.java,继承自ListView) package ...
- Android Listview滑动时不加载数据,停下来时加载数据,让App更优
转载:http://blog.csdn.net/yy1300326388/article/details/45153813 数据源配置(Adapter) package com.zhengsongla ...
- 微信小程序页面在调取到接口数据之前是加载中状态
首先,我们先建一个文件夹,文件目录如下: wxml代码如下: <template name="loading"><view class="loading ...
- 上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...
现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据 每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成 1.添加data变量 编辑rec ...
- UE4加载osgb倾斜摄影数据
在UE4引擎中动态加载调度osgb倾斜摄影数据,利用多线程动态加载瓦片数据,可以顺畅加载海量的瓦片数据.最大可加载200G以上数量级. Unity3D加载osgb倾斜摄影数据:Unity3d(UE4) ...
- v-loading加载中
一.整页加载 使用v-loading在接口为请求到数据之前,显示加载中,直到请求到数据后消失. //全局loading <template><div v-loading=" ...
- activity中fragment 返回键不退出_优雅地处理加载中(loading),重试(retry)和无数据(empty)等...
LoadSir是一个高效易用,低碳环保,扩展性良好的加载反馈页管理框架,在加载网络或其他数据时候,根据需求切换状态页面,可添加自定义状态页面,如加载中,加载失败,无数据,网络超时,占位图,登录失效等常 ...
- 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)
<template><div class="sg-page-body"><div class="sg-list"><v ...
最新文章
- Association Rules 关联规则
- 如何编译ReactNative示例程序Examples
- php动态数组的存储过程,PHP数组作为存储过程的输入
- Intellij IDEA 中无法下载 Cloud Toolkit 问题解决
- Could not load file or assembly 'System.Web.Extensions
- FTP Active Passive
- 共享内存 传一个类指针_共享内存介绍:Shared Memory
- c++future 配合httplib post 高级技巧
- SQL 分页查询的四种方法
- python yield原理_从python的yield说起
- ubuntu下卸载cuda8.0,和安装cuda9.0,cudnn7.0,tensorflow-gpu=1.8
- android 结束if循环_简单探究Android平台下' if ' 语句条件判断耗时情况
- MongoDB副本集配置系列二:配置MongoDB副本集
- 数据库的几个基本概念
- php spider 参数详解,利用phpspider爬取网站数据
- keepalived高可用
- 备案后可以改服务器信息吗,域名备案后可以更改服务器
- 一根均线选股法_“傻瓜式炒股法”——20日均线一根均线买入法,简单很实用!...
- 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
- 再添荣誉!青软集团获评「山东省科技小巨人企业」称号