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吧


目录
相关文章
|
C# 索引
C# 获取listview中选中一行的值
C# 获取listview中选中一行的值
847 0
|
Android开发
让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏
本文讲的是让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏,在这篇文章中,我们将看到如何实现像Google+ 应用程序一样,当列表下滑时,Toolbar和FAB(包括其他的View)隐藏;当列表上滑时,Toolbar和FAB(包括其他的View)显示的效果;这种效果在Material Design Checklist提到过.
1882 0
|
Android开发 数据格式 XML
ListView自动滚到最后一条
1.listview xml里面加上 android.transcriptmode=alwaysScroll android:stackFromBottom="true"//此种情况 每次数据更新状态都会滚到最后一条 到顶部 ``` if (!listview.
673 0
|
Android开发 缓存 C#
android ListView包含Checkbox滑动时状态改变
题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎,那么不要着急,一步一步来。
1029 0
|
Java Android开发
android中设置ListView的选中的Item的背景颜色
ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的。              1、配置main.
1101 0