android 底部停靠 底部吸附_下拉刷新上拉加载控件+Material Design使用+FlexboxLayout

下拉刷新上拉加载控件+Material Design使用+FlexboxLayout

Material Design控件使用

前几天转载了两篇Material Design控件使用的文章,这里就不多做叙述,下面是传送门,想要学习的小伙伴可以去看下:

更新:依赖库已更新,如果想使用最新版的小伙伴做下修改

1.当列表只有一页数据的时候,底部的 footer 加载中无法隐藏;

2.添加隐藏/显示底部footer方法(具体在下文)

更新:添加头部header隐藏/显示方法/移除(具体在下文)

FlexboxLayout使用

pulltorefreshRecylerView

下拉刷新上拉加载控件

描述

这是一个下拉刷新上拉加载更多框架,头部用的秋哥的android-Ultra-Pull-To-Refresh,底部和没有数据的状态自己实现的。

特点

可定制的头部 (可以查看android-Ultra-Pull-To-Refresh文档)

可定制的底部 (加载中/没有数据/加载失败 三种状态的定制)

可定制的没有数据状态显示 (目前只有一个状态)

可定制列表智能预加载

目前提供一个实现好的ItemDecoration(头部吸附效果)

效果预览

下拉刷新上拉加载

头部吸附效果

列表智能预加载

使用方式

依赖

Step 1. 在project的build的repositories{}中添加maven { url 'https://jitpack.io' }

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. 在module中添加compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.3'

dependencies {

//compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.0'

//更新解决当列表只有一页数据的时候,底部的 footer 加载中无法隐藏

//compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.1'

//添加header隐藏/显示方法/移除

compile 'com.github.tengyukun:pulltorefreshRecylerView:v1.3'

}

配置

目前有两个参数可以配置

app:emply_layout 没有数据时候布局

app:number_load_more 最后可见条目 + number_load_more > total 触发加载更多;默认值为4

xml中配置示例

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"/>

activity代码配置

基本设置 prv_fragmentthree_content.setAdapter(rvAdapter = new RvAdapter());//设置adapter

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

prv_fragmentthree_content.setOnRefreshListener(this);//设置刷新监听

prv_fragmentthree_content.setOnLoadListener(this);//设置加载更多监听

隐藏/显示空状态界面 prv_fragmentthree_content.hideEmptyView();

prv_fragmentthree_content.showEmptyView();

(v1.1更新)隐藏/显示底部footer prv_fragmentthree_content.hideFooterView();

prv_fragmentthree_content.showFooterView();

(v1.2更新)隐藏/显示/移除底部header prv_fragmentthree_content.hideHeaderView();

prv_fragmentthree_content.showHeaderView();

prv_fragmentthree_content.removeHeaderView();

刷新设置 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);

adapter代码配置

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

//创建ViewHolder

public abstract VH createCustomViewHolder(ViewGroup parent, int viewType);

//ViewHolder设置数据

public abstract void bindCustomViewHolder(VH holder, T t, 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

其他配置

头部吸附效果

mItemDecoration = new StickItemDecoration(context,dataList) {

@Override

public String getTag(int position) {

return "吸附头部显示的文字";

}

}

prv_fragmentthree_content.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-Ultra-Pull-To-Refresh 秋哥默认已经实现了3个头部

MaterialHeader

PtrClassicDefaultHeader

StoreHouseHeader 一般情况下这些样式应该够了,如果有特殊需求可以自定义头部.然后prv.setHeaderView(view);

底部的话目前我只实现了一个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()方法设置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值