1. 首先重写一个RecyclerView类
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);}
}
  1. 然后在activity中添加一个ImageView作为数据为空时显示的图片
<!--Empty提示图--><ImageViewandroid:id="@+id/empty_iv"android:layout_margin="20dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="centerCrop"android:contentDescription="@null"android:src="@drawable/empty"android:layout_centerInParent="true" />
  1. 最后添加下面的代码即可

    1. 找到相应的ImageView
    2. 调用setEmptyView方法
recyclerView.setEmptyView(mEmptyView);
  1. 显示

有数据:

数据为空:

关于RecyclerView(二)设置EmptyView相关推荐

  1. android: ListView设置emptyView 误区

    使用ListVIew 来设置EmptyView的时候须注意: ListView listview = (ListView) findViewById(R.id.list);View emptyView ...

  2. 求助帖:android开发初期:为什么我在活动二设置的singInstance模式跑到活动三去了???

    求android开发的高手帮我看看这个问题吧: <activity android:name=".SecondActivity"             android:la ...

  3. ListView设置EmptyView之后不显示

    在代码里简单设置里一下emptyView后发现根本不显示,代码如下: TextView tv= new TextView(this); tv.setText("this is a empty ...

  4. DHTMLX 前端框架 建立你的一个应用程序教程(二)--设置布局

    Layout控件的演示 Dhtmlx有很多的组建来组织网页的建设, 这篇主要介绍dhtmlxLayout . 下面图片中 布局将各个组件(1.Menu 2.Toolbar 3.Grid 4.Form ...

  5. mysql 命令行 设置同步_MySQL同步(二) 设置同步

    File 字段显示了二进制日志文件名,Position 字段显示了日志偏移位置.在这个例子中,日志文件是 mysql-bin.003,偏移位置是 73.记下这些值,在后面设置slave的时候就需要用到 ...

  6. ActiViz学习点滴(二)——设置背景色(纯色+渐变色)

    新建Winform工程,我使用的库是ActiViz 5.8.0.607 X64D,ActiViz库是没有源代码的,一共57个文件,除一个XML注释文档外,其他的文件都要复制到项目目录下,添加引用的时候 ...

  7. android RecyclerView 频繁设置数据闪退问题

    最近项目中一个播放的列表,有上下切换功能.测试频繁切换更换刷新数据时,报出以下错误: java.lang.IllegalArgumentException Scrapped or attached v ...

  8. (二)设置hexo支持mermaid

    欢迎访问个人网络日志

  9. 【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )

    文章目录 一.修改单条数据 二.批量修改数据 三.完整代码示例 四.RecyclerView 相关资料 一.修改单条数据 修改单条数据 : 调用 RecyclerView.Adapter 的 void ...

最新文章

  1. Scrum团队选择scrum看板工具的7点特征
  2. ui-router中使用ocLazyLoad和resolve
  3. python 抓取网页(一)
  4. 使用powershell一次性创建用户,OU及组
  5. 内置的struts Action 类----DispatchAction
  6. linux环境安装LFTP_02
  7. 二.编写第一个c#程序(注释,命名空间,类,Main方法,标识符,关键字,输入,输出语句,)...
  8. Hibernate多对多映射 - 连接表
  9. Outh2协议有哪四种授权模式?
  10. json过滤某些属性 之@jsonignore
  11. 如何让产品用户拥有一流的上传体验
  12. Android 面试(四):Android Service 你真的能应答自如了吗?
  13. iOS7以上: 实现如“日历”的 NavigationBar
  14. 软件测试基础知识+面试
  15. SQL语句的连接-内连接 外连接
  16. 算法面试中:时间复杂度和空间复杂度是什么?
  17. FairGuard游戏加固兼容摸摸鱼和TAPTAP云玩
  18. 算法导论第十二章总结以及课后题答案
  19. The view Myapp.views.welcome didn‘t return an HttpResponse object. It returned None instead.
  20. C# Culling Mask

热门文章

  1. 【译】 WebSocket 协议第十章——安全性考虑(Security Considerations)
  2. WPF 从文件加载字体
  3. Please review your Gradle project setup in the android/ folde
  4. FAQ系列 | mysqldump选项之skip-opt
  5. Visual Studio DSL 入门 13---结合T4生成代码
  6. 【数据结构笔记20】图的定义,图的表示:邻接矩阵与邻接表
  7. 【数据结构笔记15】优先队列、堆、最大堆、堆的操作(插入、删除、建立)与C实现
  8. 计数显示器c语言程序,51单片机计数显示器Proteus仿真程序
  9. sublime php快捷键,sublime快捷键
  10. [搬运] mac下安装GDB