前言
MTSimpleAdapter github: MTSimpleAdapter
在上一篇博客中適配ListView和RecyclerView構建多Item模板的終極殺器——MTSimpleAdapter 中介紹了MTSimpleAdapter框架的基本使用方式,在本文中,我們將基於MTSimpleAdapter來做一些擴展。
通常,我們在使用ListView和RecyclerView的時候,經常有這三方面的需求:
1. 當正在加載數據時,顯示一個loading頁面
2. 當無數據時,顯示一個空頁面
3. 當獲取數據網絡訪問出錯,顯示一個錯誤頁面
因此,基於上述三方面的需求,MTSimpleAdapter做了一些常用擴展,簡化了ListView和RecyclerView的開發流程,大大減少了代碼量。
ListView和RecyclerView中的用法:
由於在ListView和RecyclerView中用法是一致的,所以這裏主要以ListView爲例。
1. LoadingProvider(加載數據時的loading頁面)
(1)創建LoadingProvider
public class LoadingProvider implements ViewProvider {
@Override
public void bindView(Context context, ViewHolder viewHolder, int position, IItemBean item) {
}
@Override
public int getLayoutId() {
return R.layout.item_loading;
}
}
其中R.layout.item_loading是loading頁面的佈局,這裏簡單起見 只要一個progress和一個textView顯示正在加載。。。
(2)在adapter中設置LoadingProvider
mAdapter.setLoadingProvider(LoadingProvider.class);
mListView.setAdapter(mAdapter);
mAdapter.setLoading(true);
initData();
mAdapter.setLoading(false);
通過ListViewAdapter和RecyclerAdapter的setLoadingProvider方法添加LoadingProvider,然後在獲取數據前調用mAdapter.setLoading(true)來顯示loading界面,在數據獲取完成後調用mAdapter.setLoading(false)來隱藏loading界面即可。
2. EmptyProvider(數據爲空時的empty頁面)
(1)創建EmptyProvider
public class EmptyProvider implements ViewProvider {
@Override
public void bindView(Context context, ViewHolder viewHolder, int position, IItemBean item) {
}
@Override
public int getLayoutId() {
return R.layout.item_empty;
}
}
其中R.layout.item_empty是empty頁面的佈局
(2)在adapter中設置ErrorProvider
mAdapter.setEmptyProvider(EmptyProvider.class);
通過ListViewAdapter和RecyclerAdapter的setEmptyProvider方法添加EmptyProvider,當adapter中的數據爲空時會自己顯示empty頁面。