ListView设置EmptyView之后不显示
Posted BennuCTech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ListView设置EmptyView之后不显示相关的知识,希望对你有一定的参考价值。
在代码里简单设置里一下emptyView后发现根本不显示,代码如下:
TextView tv= new TextView(this);
tv.setText("this is a empty view")
list.setEmptyView(tv);
研究发现自己对ListView的Emptyview的理解有误。它并不是添加进ListView中,仅仅是与ListView联动。
怎么理解?我们先看看我们一般如何使用?
布局xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
<LinearLayout
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
....
</LinearLayout>
</LinearLayout>
代码:
mLv = (ListView) findViewById(R.id.lv);
mLv.setAdapter(...);
mLv.setEmptyView(findViewById(android.R.id.empty));
所以可以看到,EmptyView必须与ListView同级,也就是说add到ListView的父view下,然后再set给ListView。
ListView会控制它显示或者隐藏即可。其实原理很简单。
那么纯代码怎么办?我们需要手动将它add到ListView的父view下,如下:
TextView emptyView = new TextView(context);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
emptyView.setText(“This appears when the list is empty”);
emptyView.setVisibility(View.GONE);
((ViewGroup)list.getParent()).addView(emptyView);
list.setEmptyView(emptyView);
这样就可以了,还是很麻烦,所以还是老实写xml吧
关注公众号:BennuCTech,获取更多干货!
以上是关于ListView设置EmptyView之后不显示的主要内容,如果未能解决你的问题,请参考以下文章
判断Listview滑到顶部的最精准方案,解决Listview设置EmptyView与SwipeRefreshLayout冲突
Android ListView之setEmptyView的问题
为 android ListView 设置空视图不适用于在 Java 中创建的视图