读书人

ListView设立EmptyView的方法

发布时间: 2012-11-22 00:16:41 作者: rapoo

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);          }}



读书人网 >移动开发

热点推荐