我们在使用ListView展示数据时,如何需要展示的数据集为空,那么就会显示一个黑屏,为了解决该问题,ListView有一个方法setEmptyView,当数据集为空时,就显示设置的这个界面。
但需要注意:这个方法的设置是有限制的,就是设置的View必需在当前的View
hierarchy里,亦即这个View需要被add到当前Viewhierarchy的一个结点上,如果没有添加到结点上的话,调用setEmptyView(View
v)是没有任何效果的。
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout="@layout/emptyview"
/>
定义emptyview.xml
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="EmptyView视图"
android:textSize="20pt" />" 对于这种情况,只需要这两个xml就可以完成。如果使用普通的Activity完成
定义非空时的xml:
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout="@layout/emptyview"
/>
定义空时的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);
ArrayAdapteradaptr=new
ArrayAdapter(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);
}
}