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

	}
}