ListView设置EmptyView的方法
我们在使用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;@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.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); }}