处理ListView数据为空的情况

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

      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的用法,我在之前的博文《延迟加载和避免重复加载》已进行过叙述。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值