189 8069 5689

Android中setEmptyView如何使用

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

玉田网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

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


文章标题:Android中setEmptyView如何使用
标题URL:http://cdxtjz.cn/article/pjdogd.html

其他资讯