ListView设置EmptyView之后不显示

简介: 在代码里简单设置里一下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吧


目录
打赏
0
0
0
0
7
分享
相关文章
C# 获取listview中选中一行的值
C# 获取listview中选中一行的值
906 0
RadioGroup中RadioButton默认选中问题
RadioGroup中RadioButton默认选中问题
让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏
本文讲的是让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏,在这篇文章中,我们将看到如何实现像Google+ 应用程序一样,当列表下滑时,Toolbar和FAB(包括其他的View)隐藏;当列表上滑时,Toolbar和FAB(包括其他的View)显示的效果;这种效果在Material Design Checklist提到过.
1920 0
android ListView包含Checkbox滑动时状态改变
题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎,那么不要着急,一步一步来。
1066 0
Android滚动页面位置指示器:CircleIndicator
 Android滚动页面位置指示器:CircleIndicator CircleIndicator是github上的一个开源的用于页面滚动时候的位置指示器,指示当前页面在总的页面中的位置和前后位置关系,github上的项目主页是:https://github.com/ongakuer/CircleIndicator 其效果如图所示: 可以看到,选中和未被选中时候的球的大小并不相同,且颜色在CircleIndicator中只有一个颜色,未选中的颜色只是选中时候颜色的半透明。
1171 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等