Android AdapterView setEmptyView

发布于 2024-08-30 03:42:16 字数 1663 浏览 14 评论 0

当我们使用 ListView 或 GridView 的时候,当列表为空的时候,我们往往需要一个 Loading 或者一段提示文字又或者一个特殊的 View 来提示用户操作,这个时候就用到了 setEmptyView() 方法。

setEmptyView() ​ 其实是 AdapterView 的方法,而我们开发中常用到的 ListView, GridView, ExpandableListView 等都是继承于 AdapterView 的,所以可以直接调用这个方法,下面来看看具体的如何使用。

以默认显示一个提示文字的 TextView 为例,一般有以下两种用法:

1. Empty View 和 ListView 在同一个布局文件里

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list_view" />

    <TextView 
        android:id="@+id/tv_empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Loading data..." />

</FrameLayout>
ListView listView = (ListView)findViewById(R.id.list_view);
listView.setEmptyView(findViewById(R.id.tv_empty));

2. Empty View 在单独的布局文件里

这种一般适用于比较复杂的 View 或者打算在多个地方复用, setEmptyView() ​ 这个方法是有限制的,这个 View 必须在当前的 View hierarchy 的节点上,所以当我们写在外面单独的布局文件里时,需要把 View 添加到当前的 View hierarchy 的节点上。所以就需要下面的用法:

View emptyView = View.inflate(R.layout.empty_view, null);
((ViewGroup)list.getParent()).addView(emptyView);
ListView listView = (ListView)findViewById(R.id.list_view);
listView.setEmptyView(emptyView); 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

末が日狂欢

暂无简介

0 文章
0 评论
21 人气
更多

推荐作者

金兰素衣

文章 0 评论 0

ゃ人海孤独症

文章 0 评论 0

一枫情书

文章 0 评论 0

清晰传感

文章 0 评论 0

mb_XvqQsWhl

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文