您好,欢迎来到源码搜藏!分享精神,快乐你我!提示:担心找不到本站?在百度搜索“源码搜藏”,网址永远不丢失!
  • 首 页
  • 在线工具
  • 一个下拉刷新上拉加载更多的Android框架

    时间:2017-01-22 10:01 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印

    这是一个下拉刷新上拉加载更多框架(PS:后期还会加入一些常用的功能),头部用的秋哥的Android系统的超拉至刷新,底部和没有数据的状态自己实现的。其实刚刚开始我是想找个库直接用的,试了几个排名靠前的,感觉跟自己想要的不太一样,索性自己写了一个,当然这当中也遇到了问题,多亏仲大师锦的帮助在此感谢。

    特点:

    • 可定制的头部(可以查看Android的超拉至刷新文档)
    • 可定制的底部(加载中/没有数据/加载失败三种状态的定制)
    • 可定制的没有数据状态显示(目前只有一个状态)
    • 目前提供一个实现好的ItemDecoration(头部吸附效果) 

    效果预览

    1.定制头部&定制脚步

    • 头部秋哥已经定制了很多样式就直接使用了
    • 脚部这边使用的已经实现好的ErvDefaultFooter

    默认头部与顶部效果

    材质风格

    头部吸附

    使用方式

    依赖

    gradle

    compile 'com.yysauce:easyrecyclerview:1.0.0' 
    

    配置

    目前有两个参数可以配置

    • 应用:emply_layout 
      没有数据时候布局

    • 应用:number_load_more 
      最后可见条目+ number_load_more>总触发加载更多;默认值为4

    xml中配置示例

    <com.zly.www.easyrecyclerview.EasyDefRecyclerView
            android:id="@+id/erv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:emply_layout="@layout/erv_default_empty" />
    

    活动代码配置

    erv.setAdapter(rvAdapter = new RvAdapter());//设置adapter
    erv.setLastUpdateTimeRelateObject(this);//传入参数类名作为记录刷新时间key
    erv.setOnRefreshListener(this);//设置刷新监听
    erv.setOnLoadListener(this);//设置加载更多监听
    

    由于这里使用的EasyDefRecyclerView,头部就是默认经典样式所需要调用,使用其他头部时不需要调用

    erv.setLastUpdateTimeRelateObject(this);//传入参数类名作为记录刷新时间key
    

    适配器代码配置

    adapter需要实现CommonAdapter或者MultipleAdapter抽象方法

    //创建ViewHolder
    public abstract VH createCustomViewHolder(ViewGroup parent, int viewType);
    //ViewHolder设置数据
    public abstract void bindCustomViewHolder(VH holder, T t, int position);
    

    Multiple Adapter多条目布局还多一个方法需要实现

    //返回多条目的type
    public abstract int customItemViewType(int position);
    

    目前提供了下面这些方法操作适配器数据,具体实现可以在CommonAdapter中查看

    新增数据

    • public void add(@NonNull T object)
    • public void addAll(@NonNull Collection <?extends T> collection)
    • public void addAll(@NonNull T ... items)
    • public void insert(@NonNull T object,int index)
    • public void insertAll(@NonNull Collection <?extends T> collection,int index)

    删除数据

    • public void remove(int index)
    • public boolean remove(@NonNull T object)
    • public void clear()

    修改数据

    • public void update(@NonNull List mDatas)

    查看数据

    • public T getItem(int position)
    • public int getPosition(T item)
    • public List getData()

    排序

    • public void sort(Comparator <?super T> comparator)

    加载布局

    • public查看inflateView(@LayoutRes int resId,ViewGroup parent)

    adapter中ViewHolder需要继承BaseViewHolder 

    其他配置

    头部吸附效果

      mItemDecoration = new StickItemDecoration(context,dataList) {
                  @Override
                  public String getTag(int position) {
                      return "吸附头部显示的文字";
                  }
        }
      erv.addItemDecoration(mItemDecoration);
    

    这里StickItemDecoration提供了如下方法来定制吸附效果

    //设置吸附条目高度
    public void setStickHeight(int mStickHeight)
    //设置吸附条目背景
    public void setStickBackgroundColor(int mStickBackgroundColor)
    //设置吸附文字颜色
    public void setStickTextColor(int mStickTextColor)
    //设置吸附文字大小
    public void setStickTextSize(int mStickTextSize)
    //设置吸附文字leftmargin
    public void setStickTextoffset(int mStickTextoffset)
    

    自定义

    头部使用秋哥的Android系统的超拉至刷新 秋哥默认已经实现了3个头部

    • MaterialHeader
    • PtrClassicDefaultHeader
    • StoreHouseHeader

    一般情况下这些样式应该够了,如果有特殊需要可以自定义头部。

    底部的话目前我只实现了一个ErvDefaultFooter,自定义的话需要实现ErvLoadUIHandle接口。写法可以参考ErvDefaultFooter

     public interface ErvLoadUIHandle {
    
        /**
         * 允许加载更多
         */
        int LOAD = 1;
    
        /**
         * 暂无更多数据
         */
        int NOMORE = 2;
    
        /**
         * 加载失败
         */
        int LOADFAIL = 3;
    
        /**
         * @return 获取底部当前状态
         */
        int getState();
    
        void onLoading();//loading状态实现
    
        void onNoMore();//没有数据状态实现
    
        void onLoadFail(OnLoadListener listener);//加载失败实现
    
    
    }
    

    实现后调用setFooterView()方法设置 

    总结

    目前还在EasyRecyclerView还在优化欢迎各位提出你们宝贵的意见,例子可以参考 

    一个下拉刷新上拉加载更多的Android框架转载请注明出处http://www.codesocang.com/kj/listview/34341.html 源码搜藏网所有源码来自用户上传分享,版权问题及牵扯到商业纠纷均与源码搜藏网无关
    标签: