全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android ListView之setEmptyView正确使用方法

Android ListView之setEmptyView正确使用方法

 我们知道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  # ListView之setEmptyView的使用方法  # Android 软键盘状态并隐藏输入法的实例  # Android LocationManager获取经度与纬度等地理信息  # Android中Activity和Fragment传递数据的两种方式  # Android 开发之Dialog中隐藏键盘的正确使用方法  # Android Intent调用 Uri的方法总结  # 微信Android热更新Tinker使用详解(星空武哥)  # Android MeasureSpec的理解和源码的解析  # 一句  # 在此  # 就不  # 如有  # 当你  # 你看  # 要在  # 一遍  # 这两个  # 希望能  # 谢谢大家  # 看不  # 设置为  # 时才  # 就再  # 疑问请  # 假如没有  # setText  # getString  # private 


相关文章: 如何用搬瓦工VPS快速搭建个人网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  实例解析angularjs的filter过滤器  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何访问已购建站主机并解决登录问题?  建站之星多图banner生成与模板自定义指南  活动邀请函制作网站有哪些,活动邀请函文案?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何快速生成凡客建站的专业级图册?  如何通过.red域名打造高辨识度品牌网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何配置支付宝与微信支付功能?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  网页设计网站制作软件,microsoft office哪个可以创建网页?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  行程制作网站有哪些,第三方机票电子行程单怎么开?  网站制作员失业,怎样查看自己网站的注册者?  制作表格网站有哪些,线上表格怎么弄?  建站之星免费版是否永久可用?  如何通过多用户协作模板快速搭建高效企业网站?  如何生成腾讯云建站专用兑换码?  如何在建站宝盒中设置产品搜索功能?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  如何快速搭建高效WAP手机网站?  建站之星后台密码遗忘或太弱?如何重置与强化?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  济南专业网站制作公司,济南信息工程学校怎么样?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何确保FTP站点访问权限与数据传输安全?  如何选择靠谱的建站公司加盟品牌?  定制建站如何定义?其核心优势是什么?  如何快速搭建二级域名独立网站?  手机网站制作与建设方案,手机网站如何建设?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何用西部建站助手快速创建专业网站?  相册网站制作软件,图片上的网址怎么复制?  如何通过虚拟机搭建网站?详细步骤解析  建站OpenVZ教程与优化策略:配置指南与性能提升  如何快速查询网站的真实建站时间?  如何快速搭建安全的FTP站点?  C++如何编写函数模板?(泛型编程入门)  建站之星收费标准详解:套餐费用及年费价格表一览  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何安全更换建站之星模板并保留数据?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。