RecyclerView貌似不能直接设置空视图,所以可以自定义一个RecyclerView继承自RecyclerView并设置一个数据监听者监视数据状态。

MyCyclerView.java

package com.onepilltest.others;import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;public class MyRecyclerView extends RecyclerView {private View emptyView;private static final String TAG = "EmptyRecyclerView";//数据监听者final private AdapterDataObserver adapterDataObserver = new AdapterDataObserver() {@Overridepublic void onChanged() {checkIfEmpty();}@Overridepublic void onItemRangeInserted(int positionStart, int itemCount) {Log.i(TAG, "onItemRangeInserted" + itemCount);checkIfEmpty();}@Overridepublic void onItemRangeRemoved(int positionStart, int itemCount) {checkIfEmpty();}};private void checkIfEmpty() {if (emptyView != null && getAdapter() != null) {final boolean emptyViewVisible =getAdapter().getItemCount() == 0;emptyView.setVisibility(emptyViewVisible ? VISIBLE : GONE);setVisibility(emptyViewVisible ? GONE : VISIBLE);}}@Overridepublic void setAdapter(@Nullable Adapter adapter) {final Adapter oldAdapter = getAdapter();if (oldAdapter != null) {oldAdapter.unregisterAdapterDataObserver(adapterDataObserver);}super.setAdapter(adapter);if (adapter != null) {adapter.registerAdapterDataObserver(adapterDataObserver);}checkIfEmpty();}//设置没有内容时,提示用户的空布局public void setEmptyView(View emptyView) {this.emptyView = emptyView;checkIfEmpty();}public MyRecyclerView(@NonNull Context context) {super(context);}public MyRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {super(context, attrs);}public MyRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}
}

使用时和正常的RecyclerView一样,设置空视图时只需要调用setEmptyView即可。

recyclerView = findViewById(R.id.focus_list_list);LinearLayoutManager layoutManager = new LinearLayoutManager(this);recyclerView.setLayoutManager(layoutManager);mEmptyView = findViewById(R.id.empty_iv);

RecyclerView设置空视图相关推荐

  1. Wireshark网络分析实例集锦第2章设置Wireshark视图

    Wireshark网络分析实例集锦第2章设置Wireshark视图 Wireshark默认界面显示了一些基本的信息.如果用户想查看更详细的信息,可以手动设置Wireshark的视图.例如,在Packe ...

  2. 【RecyclerView】 九、为 RecyclerView 设置不同的布局样式

    文章目录 一.为 RecyclerView 设置不同的布局样式 二.完整代码 三.RecyclerView 相关资料 一.为 RecyclerView 设置不同的布局样式 为 RecyclerView ...

  3. 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )

    文章目录 一.初始化 OpenGL 矩阵 1.设置投影矩阵 2.设置模型视图矩阵 二.绘制点 1.清除缓冲区 2.设置当前颜色值 3.设置绘制点的大小 4.绘制点 5.将缓冲区绘制到前台 三.部分代码 ...

  4. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

  5. android 判断listview是否为空,ListView为空时显示空视图

    由于某种原因,即使ListView不为空,空视图(在这种情况下为TextView)始终会出现.我认为ListView会自动检测何时显示空视图. android:layout_height=" ...

  6. html设置ie9兼容性视图,ie9浏览器设置兼容性视图在哪里设置

    当您在使用IE9打开为早期IE版本所设计的网页时,可能会无法正常浏览.此时您可以尝试一下IE的兼容性视图功能来解决这个问题.下面由学习啦小编为你整理了ie9浏览器设置兼容性视图在哪里设置的相关方法,希 ...

  7. Win10如何进行兼容性视图设置,教程来啦!怎么设置兼容性视图

    对于我们平时不论是生活中还是工作中操作电脑,都会使用到搜索引擎,我们使用浏览器有的时候会提示让我们把浏览器设置为兼容性视图,这个应该怎么设置呢?下面小编就为大家分享怎样设置成兼容性视图. 首先我们打开 ...

  8. html布局的wrap方法,wrap_content设置一个视图的尺寸为wr

    Android中wrap_parent.match_parent是什么意思, wrap是扩展空间,并且强制性占用整个空间,不给其他控件留地方. match的话是指"填充满"父容器. ...

  9. android 设置下拉刷新,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

最新文章

  1. 2022-2028年中国涤纶市场投资分析及前景预测报告
  2. JAVA好书之《深入理解Java虚拟机》
  3. nginx php 后缀名,nginx去掉php后缀名的方法
  4. 邓侃:深度强化学习“深”在哪里?
  5. Spark入门(十一)之排序
  6. php文件操作基本使用方法
  7. 【Oracle】数据迁移工具(2):Data Dump
  8. python实现梳排序
  9. easyui省市二级联动
  10. c#使用正则表达式获取TR中的多个TD_Linux之正则表达式
  11. Python3入门机器学习经典算法与应用 第3章 numpy.array 中的运算
  12. 【离散数学】集合论 第三章 集合与关系(4) 集合的归纳定义、归纳证明、数学归纳法第一/二原理
  13. Postman 接口压力测试
  14. matlab h系统控制器,Matlab的H_inf鲁棒控制器的设计.pdf
  15. Maven安装和使用(详细版)
  16. 近期几篇有关All-Pay论文总结(博弈论+机制设计)
  17. 第一章:J2EE高级软件工程师面试题集
  18. LeetCode 2300. 咒语和药水的成功对数(二分查找)
  19. RedHat9上安装Oracle9i手记(原作:hotman_x)
  20. C#输入身高体重求BMI

热门文章

  1. pyqt5——控件1
  2. python用一维数组存储学号和成绩、然后按成绩排序输出_九度oj 题目1196:成绩排序...
  3. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
  4. sql SELECT时的with(nolock)选项说明
  5. java gui 布局 旋转_JAVA GUI编程之布局管理器
  6. Centos 启用网卡出现 no link present. Check cable
  7. ETL 工具的比较:Talend,Kettle,Informatica 等
  8. php url传递 加号,坑爹的URL编码-PHP正确处理URL中的加号(+)
  9. 三维点云学习(3)6- 实现K-Means
  10. 计算机导航医学应用,【2016年】计算机导航在全膝关节置换中的应用技术及进展【临床医学论文】.doc...