Android AdapterView setEmptyView
当我们使用 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 技术交流群。
上一篇: Android WebView 上传文件
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论