Android ListView之setEmptyView正確使用方法
Android ListView之setEmptyView正確使用方法
我們知道ListView組件提供了一個空數據是的視圖設置方法setEmptyView,該方法存在一個詬病,就是空視圖和listview組件要在一個Parent中,這個就不在此細說,下面說另一個問題,原因其實和前面那個問題同出一轍。
假如emptyView和listview在布局中,已經屬于同一個parent,設置EmptyView的代碼如下
private void setEmptyView(){
emptyTv.setText(getString(R.string.txt_no_data_refreshable));
mList.setEmptyView(empty);
}
假如沒有數據,運行,一切正常。
下面我們執(zhí)行一句代碼后
mList.setVisibility(View.VISIBLE);
我們發(fā)現,emptyView看不到了,奇怪!
我們來看一下listview的setEmptyView的代碼
public void setEmptyView(View emptyView) {
mEmptyView = emptyView;
// If not explicitly specified this view is important for accessibility.
if (emptyView != null
&& emptyView.getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
emptyView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
}
final T adapter = getAdapter();
final boolean empty = ((adapter == null) || adapter.isEmpty());
updateEmptyStatus(empty);
}
其中重點看updateEmptyStatus的源碼
private void updateEmptyStatus(boolean empty) {
if (isInFilterMode()) {
empty = false;
}
if (empty) {
if (mEmptyView != null) {
mEmptyView.setVisibility(View.VISIBLE);
setVisibility(View.GONE);
} else {
setVisibility(View.VISIBLE);
}
if (mDataChanged) {
this.onLayout(false, mLeft, mTop, mRight, mBottom);
}
} else {
if (mEmptyView != null) mEmptyView.setVisibility(View.GONE);
setVisibility(View.VISIBLE);
}
}
我們發(fā)現,控制emptyView的顯示,就是隱藏listview,這兩個試圖互相隱藏顯示,來達到效果,而且updateEmptyStatus方法只有在listview的setEmptyView時才會執(zhí)行,所以當你執(zhí)行mList.setVisibility(View.VISIBLE)的時候,listview被設置為可見,它覆蓋了emptyView,所以你看不到,如果想顯示emptyView,那就再執(zhí)行一遍setEmptyView方法。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Android 中Failed to read key from keystore解決辦法
這篇文章主要介紹了Android 中Failed to read key from keystore解決辦法的相關資料,希望通過本能幫助到大家,需要的朋友可以參考下2017-09-09
Android編程實現AlertDialog自定義彈出對話框的方法示例
這篇文章主要介紹了Android編程實現AlertDialog自定義彈出對話框的方法,結合實例形式分析了Android AlertDialog自定義彈出對話框的基本功能與事件監(jiān)聽實現技巧,需要的朋友可以參考下2017-07-07
Android?IdleHandler基本使用及應用案例詳解
這篇文章主要為大家詳細介紹了Android?IdleHandler的基本使用及應用案例,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以參考一下2022-10-10

