MTSimpleAdapter框架擴展——添加empty頁面、error頁面和loading等特性

前言

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頁面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章