这是一个下拉刷新上拉加载更多框架(ps:后期还会加入一些常用的功能.),头部用的秋哥的android-Ultra-Pull-To-Refresh,底部和没有数据的状态自己实现的.其实刚刚开始我是想找个库直接用的,试了几个排名靠前的,感觉跟自己想要的不太一样,索性自己写了一个,当然这当中也遇到了问题,多亏仲锦大师的帮助在此感谢.
感谢完了这里附上库的地址EasyRecyclerView
默认头部与顶部效果
material style头部
目前有两个参数可以配置
app:emply_layout 没有数据时候布局
app:number_load_more 最后可见条目 + number_load_more > total 触发加载更多;默认值为4
由于这里使用的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);MultipleAdapter多条目布局还多一个方法需要实现
//返回多条目的type public abstract int customItemViewType(int position);目前提供了下面这些方法操作adapter数据,具体实现可以在CommonAdapter中查看
新增数据
public void add(@NonNull T object)public void addAll(@NonNull Collection collection)public void addAll(@NonNull T… items)public void insert(@NonNull T object, int index)public void insertAll(@NonNull Collection 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 comparator)加载布局
public View inflateView(@LayoutRes int resId, ViewGroup parent)adapter中ViewHolder需要继承BaseViewHolder
这里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-Ultra-Pull-To-Refresh 秋哥默认已经实现了3个头部
MaterialHeaderPtrClassicDefaultHeaderStoreHouseHeader一般情况下这些样式应该够了,如果有特殊需求可以自定义头部.然后erv.setHeaderView(view);
底部的话目前我只实现了一个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还在优化欢迎各位提出你们宝贵的意见,例子可以参考Sample
秋哥的android-Ultra-Pull-To-Refresh 仲锦大师的帮助
qq:1835556188