標籤:
http://my.eoe.cn/yaming/archive/879.html
1 |
當我們使用ListView或GridView的時候,當列表為空白的時候,我們需要一個特殊的View來提示使用者操作,於是就有了setEmptyView().下面看看如何使用: |
1 2 3 4 5 6 7 8 910111213141516 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/list_view" /> <TextView android:id="@+id/empty_list_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="List view is empty" android:visibility="gone" /> </LinearLayout> |
123 |
ListView list= (ListView)findViewById(R.id.mylist); TextView tv= (TextView)findViewById(R.id.myempty); list.setEmptyView(tv); |
顯示複雜的View
當列表內容為空白的時候就會直接顯示出來
但是有時候我們提示的View很複雜,我們不想寫在同一個檔案中我可以想下面這樣:
123456 |
TextView emptyView = new TextView(context); emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); emptyView.setText(“This appears when the list is empty”); emptyView.setVisibility(View.GONE); ((ViewGroup)list.getParent()).addView(emptyView); list.setEmptyView(emptyView); |
或
1234 |
inflater = getLayoutInflater(); emptyView = inflater.inflate(R.layout.empty_view, null); addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); list.setEmptyView(emptyView); |
注意:
1.不要讓提示的View在不改顯示的時候顯示出來了
1 |
emptyView.setVisibility(View.GONE); |
2.setEmptyView()這個方法是有限制的,這個View必須在當前的View hierarchy的節點上,我們可以自己寫在當前布局檔案裡面,也可以寫在外面,但是需要把View添加到當前的View hierarchy的節點上。、
123 |
((ViewGroup)list.getParent()).addView(emptyView); //或者addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); |
^_^ 歡迎留言
此處用三種QQ通訊錄的圖做展示:
[java] view plaincopy
- TextView emptyView = new TextView(this);
- emptyView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
- LayoutParams.MATCH_PARENT));
- emptyView.setTextColor(getResources().getColor(
- R.color.TextTaskTypeColor));
- emptyView.setText("沒有廳店積分明細表資訊");
- emptyView.setVisibility(View.GONE);
- emptyView.setGravity(Gravity.CENTER);
- ((ViewGroup) mListView.getParent()).addView(emptyView);
- mListView.setEmptyView(emptyView);
- // 設定資料
- adapter = new ShopDetailReportAdapter();
- mListView.setAdapter(adapter);
Android ListView setEmptyView