ListView中emptyview的运用

来源:互联网 发布:win10下装linux双系统 编辑:程序博客网 时间:2024/06/15 21:00

咱们在工作中会用到ListView.当ListView的配套Adapter的数据为空的时候,我们常常希望会给用户一个提示,告诉用户此时没有数据.比如下载列表, 用户列表等等.这个时候我们可以通过ListView的setEmptyView方法来设置一个空数据时显示的View.想跟大家分享的有两点:

1.这里有的朋友会说,能不能在Adapter的getView方法中判断数据的size是否为0,是0的话我们显示空数据对应的view;否则显示有数据时的View.这里需要强调的是这样做时行不通的.因为当Adapter的数据源的数据个数(mData.size)为0时,不会调用getView!!!所以还得另想辙.


2.在使用setEmptyView时,这个空数据时要显示的View有两个生成途径:

   (1)  在xml定义视图布局时,定义该emptyView与ListView控件在View层次的同一级别上,例如

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">


    <ListView
        android:id="@+id/id_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
               <Button
        android:id="@+id/id_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_data"/>
          </RelativeLayout>


          然后在java代码中直接获取实例并调用setEmpty即可

          View emptyView = findViewById(R.id.id_button);
          mListView.setEmptyView(emptyView);


   (2)  用java代码创建View试图而不是通过xml时,需要将emptyView添加到ListView的父视图中,即:

         View emptyView = layoutInflater.inflate(R.layout.singlelayout, null);
        ((ViewGroup) mListView.getParent()).addView(emptyView); // 将emptyView添加到ListView的父亲视图中
        mListView.setEmptyView(emptyView); // 然后在调用setEmptyView


以上是对emptyView的运用小结,也许还会有另外的设置emptyView的途径,后面我还会再补充进来.

0 0