ListView设立EmptyView的方法
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; @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); } }