工作总结|Android 自定义列表刷新控件

Android 中上拉加载和下拉刷新都是很常用的控件,所以在 Android 后续版本中提供了 PullToRefresh 这个控件,以方便开发者很便捷的集成下拉刷新功能。而对于上拉加载功能,仍然需要开发者自己监听 ListView 或者 RecyclerView 滑动状态来实现自己的上拉加载功能。因此在最近猿最近基于 PullToRefresh 与 RecyclerView 自己试做了一个控件:EasyRefreshView,来方便开发者集成相关功能。

控件截图

使用说明

1、AndroidStudio 集成方法

    compile 'com.ray.easyrefreshview:easy-refresh-view:0.5.9'

2、Layout 布局文件声明

    <com.ray.easyrefreshview.EasyRefreshView
        android:id="@+id/user_elv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        easyrefreshview:layoutType="linear"
        easyrefreshview:normalLayout="@layout/item_normal"
        easyrefreshview:loadingLayout="@layout/foot_loading"
        easyrefreshview:nomoreLayout="@layout/foot_loading_nomore_data"
        easyrefreshview:errorLayout="@layout/foot_loading_error"/>

控件支持用户自定义相关 Item Layout ,分别是正常显示状态、等待显示状态、无更多数据状态、加载错误状态,集成者可以在 bindAdapter 中的 onCreate 回调方法中去创建对应 layout 的 Holder,并在 onBind 回调方法对相应的 View 进行操作。

3、控件绑定 Adapter 并自定义相关 ViewHolder

    easyRefreshView.bindAdapter(new EasyRefreshHolderCallBack() {
        @Override
        public RecyclerView.ViewHolder onCreateNormal(View view) {
            //return new NormalHolder(view);
        }

        @Override
        public void onBindNormal(RecyclerView.ViewHolder holder, int position) {
            super.onBindNormal(holder, position);
            //todo
        }
    });

4、 控件滑动到顶部和底部的两种回调

当列表滑动到顶部和底部时,分别会有 onTopLoadStarted 与 onBottomLoadStarted 回调触发,继承者可以在这两个回调中进行下拉加载与上拉刷新进行数据更新。

    public void onTopLoadStarted() {
        list.clear();
        startRxLoad(0);
    }

    public void onBottomLoadStarted(int position) {
        if (position >= mTotalCount) {
            erv.setFootViewState(EasyRefreshAdapter.FOOT_STATE_LOAD_NOMORE);
            return;
        }
        erv.setFootViewState(EasyRefreshAdapter.FOOT_STATE_LOADING);
        startRxLoad(position + 1);
    }

目前控件已开源至GitHub(相关链接) , 相关 Demo 使用数据来源豆瓣电影开放 API ,使用 Retrofit2 进行网络请求,并利用RxJava 对进行了部分逻辑处理,欢迎 Fork 和 Star ,如果有改进意见也可以提给猿,猿会在后续版本中加以改进。

O(∩_∩)O谢谢

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 154,748评论 23 678
  • 今天最清明 徐怀清//诗 走过看过想过忘过醒过混过 苦过乐过 阴阴晴晴霜霜雨雨风风火火 坎坎坷坷 三...
    焦作太极徐阅读 51评论 0 0
  • 归计未成林掩映,小市常争理。万里暗凝愁,如畜扶桑,寂寥疏寒意。 昔时河畔烟花醉,瘦落江天里。东海信悠悠,柳映危桥,...
    青竹子阅读 98评论 0 0
  • 大家早上好! [爱心]21天OH卡觉察练习[爱心] [玫瑰]第五天(人像卡)[玫瑰] 每一位都可以通过这张卡片觉察...
    天鹭阅读 55评论 0 0
  • 一早起来,赶火车去苏格兰爱丁堡。 昨晚就开始准备的早餐。 一会儿在火车上吃。 那个号称铁粉的人,为了不辜负您的厚望...
    大抗小妈阅读 153评论 2 2