ListView設置EmptyView的方法
原文:https://blog.csdn.net/yuanzeyao2008/article/details/8153365
我們在使用ListView展示數據時,如何需要展示的數據集為空,那麼就會顯示一個黑屏,為了解決該問題,ListView有一個方法setEmptyView,當數據集為空時,就顯示設置的這個界麵。
現在分兩種情況來分析這個問題:
如果你的Activity繼承ListActivity:
這種情況相對簡單,
定義非空時的xml
- <LinearLayout
- xmlns:android="https://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="https://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="https://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);
- }
- }
最後更新:2017-04-03 22:31:03