千家信息网

Android中的setEmptyView怎么使用

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇"Android中的setEmptyView怎么使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我
千家信息网最后更新 2025年02月23日Android中的setEmptyView怎么使用

这篇"Android中的setEmptyView怎么使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"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怎么使用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0