在移动平台上为用户展示数据的一个经常用法是将数据填充进一个List内,而此时须要注意的一点就是:

原文地址:(http://blog.csdn.net/vector_yi/article/details/24936163)

          怎样处理须要填充的数据为空的情况?

      ListView及其它继承自AdapterView的类都有一个简便的处理这样的情况的方法:setEmptyView(View)。
     当ListView的Adapter为空或者Adapter的isEmpty()方法返回true的时候,它将会把设置的emptyview绘制出来。

     举个栗子,如果我们须要创建一个应用来管理我们的待办事项,我们的主页面将会是一个用来展示这些待办事项的ListView。
     而当我们第一次加载进这个应用时,待办事项必定为空。此时我们就能够利用一个图片或者一段描写叙述性的话来表达“无待办事项”。
     看看XML布局文件:

 <FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width= "fill_parent"
android:layout_height= "fill_parent"
android:orientation= "vertical" > <ListView
android:id ="@+id/my_list_view"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent" /> <ImageView
android:id ="@+id/empty_view"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:src ="@drawable/empty_view" /> </FrameLayout>


再来看自己定义的drawable/empty_view文件:
<shape xmlns:android = "http://schemas.android.com/apk/res/android"
android:shape= "rectangle" >
<solid android:color= "#AA00FF00" />
</shape>
     是一个自己定义的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<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,strs);
mListView.setAdapter(adapter);*/ } }
    只创建一个ListView并设置了EmptyView为main.xml中创建的ImageView。凝视内的代码用来測试当ListView有数据时,emptyview会不会显示。

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

50个Android开发技巧(24 处理ListView数据为空的情况)的更多相关文章

  1. 50个android开发技巧

    50个android开发技巧 http://blog.csdn.net/column/details/androidhacks.html

  2. 处理ListView数据为空的情况

    如何处理需要填充的数据为空的情况? ListView及其他继承自AdapterView的类都有一个简便的处理这种情况的方法:setEmptyView(View). 当ListView的Adapter为 ...

  3. 50一个Android开发技巧(01 利用好layout_weight属性)

    问题:如何将一个Button放置在布局的中间,并设置其宽度parent的50%? 分析:问题想要达到的效果应该是这样: (原文地址:http://blog.csdn.net/vector_yi/art ...

  4. 50个Android开发技巧(12 为控件加入圆角边框)

    控件的圆角边框能够使你的App看起来更美观,事实上实现起来也非常easy. (原文地址:http://blog.csdn.net/vector_yi/article/details/24463025) ...

  5. 50个Android开发技巧(02 延迟载入和避免反复渲染视图)

    当你在Application中创建复杂的布局时.页面的渲染过程也变得更加缓慢. 此时,我们须要利用 <include />标签(避免反复渲染)和 ViewStub类(延迟载入)来优化我们的 ...

  6. 50个Android开发技巧(11 为文字加入特效)

    问题:怎样构建一个模拟LED数字时钟的页面?效果例如以下图所看到的: (原文地址:http://blog.csdn.net/vector_yi/article/details/24460227) 分析 ...

  7. 50个Android开发技巧(03 自己定义ViewGroup)

    问题:怎样创建一个例如以下图所看到的的布局?                图1 (原文地址:http://blog.csdn.net/vector_yi/article/details/244155 ...

  8. 50个Android开发技巧(09 避免用EditText对日期进行验证)

    我们都知道,在表单中对数据进行验证不但无聊并且easy出错. (原文地址:http://blog.csdn.net/vector_yi/article/details/24424713) 想象一下,一 ...

  9. 50个Android开发技巧(10 为TextView加入样式)

    首先来看一个控件的例子: (原文地址:http://blog.csdn.net/vector_yi/article/details/24428085) 手机上类似这种场景你一定已经见过非常多次了,但有 ...

随机推荐

  1. hdu-A+B问题,大数加法

    格式问题很头疼啊 Input The first line of the input contains an integer T(1<=T<=20) which means the num ...

  2. VMware网络选项分析

    摘自资料:VMware网卡选项分析.zip 很多朋友都曾问到关于Guest和Host互联,其实这并不是一件困难的事情,只要能够理解VMware的网络模型即可,今天结合着我的虚拟机,来详细介绍一下VMw ...

  3. Mvc基础(1)

  4. Dirichlet Process 和 Dirichlet Process Mixture模型

    Dirichlet Process 和 Dirichlet Process Mixture模型 [本文链接:http://www.cnblogs.com/breezedeus/archive/2012 ...

  5. RTP

    RTP学习(三)RTP/RTCP/RTSP数据包格式 h264RTP打包描述的较为详细(含SDP中sps等信息的描述) UDP.TCP.RTP三种协议的总结 http://super-and-star ...

  6. 同一個Loader對象傳入不同參數時,从数据库中查询的結果每次都一樣

    發現問題: LoaderManager().initLoader()方法調用時會根據第一個參數ID去判斷是否已經存在一個Loader加載器,如果存在則複 用,不存在則建一個新的加載器.由於我第一次已經 ...

  7. Jquery 获取表单值如input,select等方法

    1 if($("input[name=item][value='val']").attr('checked')==true) //判断是否已经打勾 name即控件name属性,va ...

  8. kernel 校验和实现

    kernel 校验和实现 Kernel checksum implementation ) TCP包的错误检测使用16位累加和校验. 除了TCP包本身, TCP校验数据块还包括源IP地址,目的IP地址 ...

  9. [转]Unity 3D旋转矢量方向及二维平面基于一点选择另一点(Rotate a Vector3 direction & Rotate a point about another point in 2D )

    http://specialwolf.blog.163.com/blog/static/124466832201301332432766/ ****************************** ...

  10. "The Same Game": A Simple Game from Start to Finish

    文档视图结构 文档/视图体系结构是一个神奇的架构,通过这个架构,我们可以分离应用程序的数据和显示.文档包含了全部的数据,视图从文档获取数据并且显示给用户.针对这个游戏例子,我们得数据是游戏板和有颜色的 ...