博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理ListView数据为空的情况
阅读量:6038 次
发布时间:2019-06-20

本文共 1237 字,大约阅读时间需要 4 分钟。

如何处理需要填充的数据为空的情况?

      ListView及其他继承自AdapterView的类都有一个简便的处理这种情况的方法:setEmptyView(View)。

     当ListView的Adapter为空或者Adapter的isEmpty()方法返回true的时候,它将会把设置的emptyview绘制出来。

 

     举个例子,假设我们需要创建一个应用来管理我们的待办事项,我们的主页面将会是一个用来展示这些待办事项的ListView。

     而当我们第一次载入进这个应用时,待办事项必然为空。此时我们就可以利用一个图片或者一段描述性的话来表达“无待办事项”。

     看看XML布局文件:

再来看自定义的drawable/empty_view文件:

是一个自定义的shape,当ListView没数据的时候才展现出来。

 

最后再看MainActivity文件:

public class MainActivity extends Activity {  private ListView mListView;  @Override  public void onCreate (Bundle savedInstanceState ) {    super. onCreate( savedInstanceState );    setContentView (R .layout .main );    mListView = (ListView ) findViewById (R .id .my_list_view );    mListView. setEmptyView (findViewById (R .id .empty_view ));    /*String[] strs=new String[]{"1","2"};    ArrayAdapter
adapter=new ArrayAdapter
(this, android.R.layout.simple_list_item_1,strs); mListView.setAdapter(adapter);*/ }}
 

仅仅创建一个ListView并设置了EmptyView为main.xml中创建的ImageView。注释内的代码用来测试当ListView有数据时,emptyview会不会显示。

 

     当然,你可以利用ViewStub来作为EmptyView,利用ViewStub可以延迟加载视图,确保在不需要显示EmptyView的时候它不会被渲染。关于ViewStub的用法,我在之前的博文《延迟加载和避免重复加载》已进行过叙述。

转载于:https://www.cnblogs.com/520-1314/p/4889548.html

你可能感兴趣的文章
2013年7月12日“修复 Migration 测试发现的 Bug”
查看>>
学习vue中遇到的报错,特此记录下来
查看>>
CentOS7 编译安装 Mariadb
查看>>
jstl格式化时间
查看>>
一则关于运算符的小例
查看>>
centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
查看>>
cronexpression 详解
查看>>
一周小程序学习 第1天
查看>>
小孩的linux
查看>>
SpringMVC、MyBatis声明式事务管理
查看>>
开发者详解:端游及手游服务端的常用架构
查看>>
JavaScript History对象
查看>>
在 Windows 下安装 Oracle 11g XE (Express Edition)
查看>>
ListView优化
查看>>
【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
查看>>
vs2015添加vc助手
查看>>
检测点1.1
查看>>
android--------阿里 AndFix 热修复
查看>>
control.add()
查看>>
Sublime text3中配置Github
查看>>