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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值