温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中setEmptyView如何使用

发布时间:2021-06-28 17:07:49 来源:亿速云 阅读:319 作者:Leah 栏目:移动开发

Android中setEmptyView如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Android ListView之setEmptyView正确使用方法

 假如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中setEmptyView如何使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI