我们知道ListView组件提供了一个空数据是的视图设置方法setEmptyView,该方法存在一个诟病,就是空视图和listview组件要在一个Parent中,这个就不在此细说,下面说另一个问题,原因其实和前面那个问题同出一辙。

假如emptyView和listview在布局中,已经属于同一个parent,设置EmptyView的代码如下

    private void setEmptyView(){emptyTv.setText(getString(R.string.txt_no_data_refreshable));mList.setEmptyView(empty);}

假如没有数据,运行,一切正常。

下面我们执行一句代码后

        mList.setVisibility(View.VISIBLE);

我们发现,emptyView看不到了,奇怪!

我们来看一下listview的setEmptyView的代码

    public void setEmptyView(View emptyView) {mEmptyView = emptyView;// If not explicitly specified this view is important for accessibility.if (emptyView != null&& emptyView.getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) {emptyView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);}final T adapter = getAdapter();final boolean empty = ((adapter == null) || adapter.isEmpty());updateEmptyStatus(empty);}

其中重点看updateEmptyStatus的源码

    private void updateEmptyStatus(boolean empty) {if (isInFilterMode()) {empty = false;}if (empty) {if (mEmptyView != null) {mEmptyView.setVisibility(View.VISIBLE);setVisibility(View.GONE);} else {setVisibility(View.VISIBLE);}if (mDataChanged) {           this.onLayout(false, mLeft, mTop, mRight, mBottom); }} else {if (mEmptyView != null) mEmptyView.setVisibility(View.GONE);setVisibility(View.VISIBLE);}}

我们发现,控制emptyView的显示,就是隐藏listview,这两个试图互相隐藏显示,来达到效果,而且updateEmptyStatus方法只有在listview的setEmptyView时才会执行,所以当你执行 mList.setVisibility(View.VISIBLE)的时候,listview被设置为可见,它覆盖了emptyView,所以你看不到,如果想显示emptyView,那就再执行一遍setEmptyView方法。

垃圾的Android-ListView-setEmptyView相关推荐

  1. android: ListView设置emptyView 误区

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

  2. android ListView包含Checkbox滑动时状态改变

    题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...

  3. Android ListView 自定义背景后 滚动时的背景变黑问题

    ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉,原因是,滚动时,列表里面的view重绘时,用的依旧 ...

  4. Android listview viewholder

    2019独角兽企业重金招聘Python工程师标准>>> Android ListView ViewHolder 利用adapter中的getView的 contentView 的复用 ...

  5. Android ListView常用用法

    ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅. 程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按 ...

  6. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d... 作者:黄宁源 一,背景 RecyclerView是谷歌官方出的一 ...

  7. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  8. Android ListView 圆角

    android ListView实现圆角实例教程二 Android框架浅析之锁屏(Keyguard)机制原理 http://www.eoeandroid.com/thread-181604-1-1.h ...

  9. Android listView 去掉header和footer中的分割线

    Android listView 去掉header和footer中的分割线 方法一: 在listView中加上android:headerDividersEnabled="false&quo ...

  10. android ListView布局之二(是用simpleAdapter绑定数据)

    main.xml主布局文件,代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

最新文章

  1. python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题
  2. WMAP环境上传图片报错【找不到临时文件夹】解决方案
  3. 建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统
  4. MongoDB 语法陷阱(转自51CTO)
  5. 军事医学研究院应晓敏组招聘博士后
  6. 在spring中使用JdbcTemplate进行数据库管理操作
  7. day20 java的String
  8. 探探自动右滑_利用AccessibilityService实现探探自动右划
  9. 使用Linux的tzselect功能,查看各个洲都有哪些国家(地区)
  10. VMware Workstation 常见问题解决
  11. 图论算法:稳定婚姻问题,如何找到最适合自己的另一半
  12. 个人CTF入门训练过程WriteUp
  13. 技术岗的职业规划_技术型员工职业生涯规划
  14. 机器学习、深度学习、神经网络还傻傻分不清吗?
  15. 403错误服务器未响应是什么意思,什么是HTTP ERROR 403?导致403错误的主要原因及解决方法...
  16. 傻瓜式教学——手把手教你电脑三种方式连接打印机
  17. 高职对口计算机试题ppt,高职单招中职计算机练习卷和答案.doc
  18. java ebcdic_java EBCDIC | 学步园
  19. 缩略图方式下, 资源管理器,不能显示文件名
  20. AD19 报错记录 Un-Routed Net Constraint: Net LED Between Pad J3-10

热门文章

  1. SDHK_Tool.Static.SS_EulerAngleRotation 欧拉角旋转
  2. 中国石油大学(华东)校园网络认证脚本
  3. 程序员在大学的自我管理
  4. 宝,别踩我蜜罐了,可好?
  5. 同构和异构经典图神经网络汇总+pytorch代码
  6. 一种免费将PDF转word的方式
  7. python——pycharm打断点debug入门
  8. Ray+GPU支持高性能计算
  9. l05173芯片针脚图_L05173TR
  10. ColdFusion是什么