人所缺少的不是才干而是志向,不是成功的能力而是勤劳的意志。 —— 部尔卫javascript
前几天分享了两篇Material Design控件使用的文章,这里就很少作叙述,下面是传送门,想要学习的小伙伴能够去看下:java
juejin.im/entry/58d8d…
juejin.im/entry/58d9c…android
这是一个下拉刷新上拉加载更多框架,头部用的秋哥的android-Ultra-Pull-To-Refresh,底部和没有数据的状态本身实现的。git
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}复制代码
dependencies {
//compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.0'
//更新解决当列表只有一页数据的时候,底部的 footer 加载中没法隐藏
//compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.1'
//添加header隐藏/显示方法
compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.2'
}复制代码
app:emply_layout
没有数据时候布局github
app:number_load_more
最后可见条目 + number_load_more > total 触发加载更多;默认值为4app
<com.pulltorefresh.tyk.library.PtrDefRecyclerView
android:id="@+id/prv_fragmentthree_content"
android:layout_height="match_parent"
android:layout_width="match_parent"
app:emply_layout="@layout/erv_default_empty"
app:number_load_more="5"/>复制代码
基本设置框架
prv_fragmentthree_content.setAdapter(rvAdapter = new RvAdapter());//设置adapter
prv_fragmentthree_content.setLastUpdateTimeRelateObject(this);//传入参数类名做为记录刷新时间key
prv_fragmentthree_content.setOnRefreshListener(this);//设置刷新监听
prv_fragmentthree_content.setOnLoadListener(this);//设置加载更多监听复制代码
隐藏/显示空状态界面maven
prv_fragmentthree_content.hideEmptyView();
prv_fragmentthree_content.showEmptyView();复制代码
(v1.1更新)隐藏/显示底部footeride
prv_fragmentthree_content.hideFooterView();
prv_fragmentthree_content.showFooterView();复制代码
(v1.2更新)隐藏/显示底部header布局
prv_fragmentthree_content.hideHeaderView();
prv_fragmentthree_content.showHeaderView();复制代码
刷新设置
prv_fragmentthree_content.refreshComplete();//下拉刷新结束
prv_fragmentthree_content.loadComplete();//上拉加载结束
prv_fragmentthree_content.loading();//上拉加载显示"加载中"
prv_fragmentthree_content.loadFail();//上拉加载显示"加载失败,点击重试"
prv_fragmentthree_content.noMore();//上拉加载显示"暂无更多数据"复制代码
因为这里使用的PtrDefRecyclerView,头部就是默认经典样式因此须要调用,使用其余头部时不须要调用
prv_fragmentthree_content.setLastUpdateTimeRelateObject(this);//传入参数类名做为记录刷新时间key复制代码
使用MaterialHeader
MaterialHeader materialHeader = new MaterialHeader(activity);
materialHeader.setPadding(0, 40,0,40);
prv_fragmentthree_content.setHeaderView(materialHeader);
prv_fragmentthree_content.setPinContent(true);复制代码
//建立ViewHolder
public abstract VH createCustomViewHolder(ViewGroup parent, int viewType);
//ViewHolder设置数据
public abstract void bindCustomViewHolder(VH holder, T t, int position);复制代码
新增数据
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)复制代码
头部吸附效果
mItemDecoration = new StickItemDecoration(context,dataList) {
@Override
public String getTag(int position) {
return "吸附头部显示的文字";
}
}
prv_fragmentthree_content.addItemDecoration(mItemDecoration);复制代码
//设置吸附条目高度
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个头部
底部的话目前我只实现了一个PtrDefaultFooter,自定义的话须要实现PtrLoadUIHandle接口.写法能够参考PtrDefaultFooter
public interface PtrLoadUIHandle {
/** * 容许加载更多 */
int LOAD = 1;
/** * 暂无更多数据 */
int NOMORE = 2;
/** * 加载失败 */
int LOADFAIL = 3;
/** * @return 获取底部当前状态 */
int getState();
void onLoading();//loading状态实现
void onNoMore();//没有数据状态实现
void onLoadFail(OnLoadListener listener);//加载失败实现
}复制代码
实现后调用setFooterView()方法设置
前几天在掘金上看到依然饭特稀西大神写的Android可伸缩布局-FlexboxLayout(支持RecyclerView集成),试了一下,非常好用啊,这里也不作叙述,下面是效果图和传送门,样式有不少想学习的小伙伴能够去看一下。
Github地址:github.com/tengyukun/p…请你们多多关注,更多更新会首先在GitHub上体现,也会在第一时间在本平台发布