一、引入依赖
//SmartRefreshLayout
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行
//BaseRecyclerViewAdapterHelper
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.42'
二、SmartRefreshLayout配置
在AppApplication中,添加header和footer配置
//static 代码段可以防止内存泄露
static {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
@Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
}
});
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
@Override
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//指定为经典Footer,默认是 BallPulseFooter
return new ClassicsFooter(context).setDrawableSize(20);
}
});
}
三、实例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/srl_smart_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_smart_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
public class SmartRefreshActivity extends BaseActivity<SmartRefreshPresenter> implements SmartRefreshContract.ISmartRefreshView {
@BindView(R.id.srl_smart_refresh)
SmartRefreshLayout srl_smart_refresh;
@BindView(R.id.rv_smart_refresh)
RecyclerView rv_smart_refresh;
private SmartRefreshAdapter adapter;
private List<SmartRefreshBean> smartRefreshBeanList = new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_smart_refresh);
ButterKnife.bind(this);
presenter = new SmartRefreshPresenter(this);
srl_smart_refresh.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshLayout) {
presenter.getData();
}
});
srl_smart_refresh.setEnableLoadMore(false);
adapter = new SmartRefreshAdapter(smartRefreshBeanList);
rv_smart_refresh.setLayoutManager(new LinearLayoutManager(this));
rv_smart_refresh.setItemAnimator(new DefaultItemAnimator());
rv_smart_refresh.setHasFixedSize(true);
rv_smart_refresh.setAdapter(adapter);
srl_smart_refresh.autoRefresh();
}
@Override
public void showContent(List<SmartRefreshBean> smartRefreshBeans) {
srl_smart_refresh.finishRefresh();
srl_smart_refresh.finishLoadMore();
smartRefreshBeanList.clear();
smartRefreshBeanList.addAll(smartRefreshBeans);
adapter.notifyDataSetChanged();
}
}
public class SmartRefreshAdapter extends BaseQuickAdapter<SmartRefreshBean, BaseViewHolder> {
public SmartRefreshAdapter(@Nullable List data) {
super(R.layout.item_smart_refresh, data);
}
@Override
protected void convert(BaseViewHolder helper, SmartRefreshBean item) {
GlideApp.with(mContext).load(item.getBgPicture()).into((ImageView) helper.getView(R.id.iv_item_smart_refresh));
helper.setText(R.id.tv_item_smart_refresh, item.getName());
}
}
![](https://img.haomeiwen.com/i8014044/c026a4fc8a581d7e.jpg)
网友评论