这是一个下拉刷新上拉加载更多框架(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还在优化欢迎各位提出你们宝贵的意见,例子可以参考
资源均来自第三方,谨慎下载,前往第三方网站下载