原文:http://blog.csdn.net/yuanzeyao2008/article/details/8153365
我们在使用ListView展示数据时,如何需要展示的数据集为空,那么就会显示一个黑屏,为了解决该问题,ListView有一个方法setEmptyView,当数据集为空时,就显示设置的这个界面。
现在分两种情况来分析这个问题:
如果你的Activity继承ListActivity:
这种情况相对简单,
定义非空时的xml
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <ListView
- android:id="@android:id/list"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- ></ListView>
- <ViewStub android:id="@android:id/empty"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_gravity="center"
- android:layout="@layout/emptyview"
- />
- </LinearLayout>
定义emptyview.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <Button android:id="@+id/btn_emptyview"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:text="EmptyView视图"
- android:textSize="20pt"
- />"
- </LinearLayout>
对于这种情况,只需要这两个xml就可以完成
如果使用普通的Activity完成
定义非空时的xml:
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <ListView
- android:id="@+id/list"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- ></ListView>
- <ViewStub android:id="@+id/empty"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_gravity="center"
- android:layout="@layout/emptyview"
- />
- </LinearLayout>
定义空时的xml和上面一样
区别在于Actiivty中的代码
- public class SecondActivity extends Activity
- {
- //private static final String[]items={"A","N","C"};
- private static final String[]items={};
- private ListView list;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- this.setContentView(R.layout.noempty);
- ArrayAdapter<String>adaptr=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
- list=(ListView)this.findViewById(R.id.list);
- list.setAdapter(adaptr);
- ViewStub mViewStub = (ViewStub)findViewById(R.id.empty);
- list.setEmptyView(mViewStub);
- }
- }