SmartRefreshLayout:使用笔记

SmartRefreshLayout刷新组件github地址

1、BaseApplication中做全局配置

// TODO: 全局一次性配置下拉刷新组件默认属性
	static {
		//启用矢量图兼容
		AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
		//设置全局默认配置(优先级最低,会被其他设置覆盖)
		SmartRefreshLayout.setDefaultRefreshInitializer(new DefaultRefreshInitializer() {
			@Override
			public void initialize(@NonNull Context context, @NonNull RefreshLayout layout) {
				layout.setEnableRefresh(true);
				layout.setEnableLoadMore(false);
				layout.setEnableAutoLoadMore(false);
				layout.setEnableOverScrollBounce(false);
				layout.setDisableContentWhenRefresh(true);
				layout.setDisableContentWhenLoading(true);
				layout.setFooterHeight(45);
			}
		});
		//设置全局默认的Header
		SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
			@NonNull
			@Override
			public RefreshHeader createRefreshHeader(@NonNull Context context, @NonNull RefreshLayout layout) {
				layout.setPrimaryColorsId(R.color.kidney_head, R.color.kidney_hint);
				return new ClassicsHeader(context).setTextSizeTitle(13).setTextSizeTime(10)
						.setTimeFormat(new DynamicTimeFormat("更新于:%s"))
						.setArrowResource(R.drawable.ic_arrow_refresh);
			}
		});
		//设置Header文本
		ClassicsHeader.REFRESH_HEADER_PULLING = "下拉";
		ClassicsHeader.REFRESH_HEADER_REFRESHING = "加载中...";
		ClassicsHeader.REFRESH_HEADER_LOADING = "加载中...";
		ClassicsHeader.REFRESH_HEADER_RELEASE = "释放刷新";
		ClassicsHeader.REFRESH_HEADER_FINISH = "刷新成功";
		ClassicsHeader.REFRESH_HEADER_FAILED = "刷新失败";
		//设置全局默认的Footer
		SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
			@NonNull
			@Override
			public RefreshFooter createRefreshFooter(@NonNull Context context, @NonNull RefreshLayout layout) {
				return new ClassicsFooter(context).setPrimaryColorId(R.color.kidney_head).setTextSizeTitle(13)
						.setArrowResource(R.drawable.ic_arrow_refresh);
			}
		});
		//设置Footer文本
		ClassicsFooter.REFRESH_FOOTER_PULLING = "上拉加载更多";
		ClassicsFooter.REFRESH_FOOTER_RELEASE = "释放立即加载";
		ClassicsFooter.REFRESH_FOOTER_REFRESHING = "...正在加载...";
		ClassicsFooter.REFRESH_FOOTER_LOADING = "...正在加载...";
		ClassicsFooter.REFRESH_FOOTER_FINISH = "加载完成";
		ClassicsFooter.REFRESH_FOOTER_FAILED = "加载失败";
		ClassicsFooter.REFRESH_FOOTER_NOTHING = "已经到底了";
	}

2、在SmartRefreshLayout的基础上,加一些自己项目的统一处理

public class KSmartRefreshLayout extends SmartRefreshLayout {
	private int mPageSize = 10;

	public KSmartRefreshLayout(Context context) {
		super(context);
	}

	public KSmartRefreshLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public KSmartRefreshLayout(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
	}

	/**
	 * 设置每次加载的数量
	 */
	public void setPageSize(int pageSize) {
		this.mPageSize = pageSize;
	}

	/**
	 * 完成下拉刷新
	 * 恢复没有更多数据的原始状态
	 */
	public void refreshComplete() {
		finishRefresh();
		resetNoMoreData();
	}

	/**
	 * 完成上拉加载更多
	 *
	 * @param resultSize 当前List.Size
	 * @param time       pageIndex
	 */
	public void setResultSize(int resultSize, int time) {
		if (resultSize == 0) {
			if (time == 0) {
				//展示空View
			}
			finishLoadMoreWithNoMoreData();
		} else if (resultSize > 0 && resultSize < mPageSize) {
			finishLoadMoreWithNoMoreData();
		} else {
			finishLoadMore();
		}
	}
}

3、XML中的使用

<com.syg.android.lib.view.recycleView.KSmartRefreshLayout
    android:id="@+id/refresh_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srlEnableAutoLoadMore="true"
    app:srlEnableLoadMore="true">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycle_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"/>
</com.syg.android.lib.view.recycleView.KSmartRefreshLayout>

4、Activity中的使用


refreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
	@Override
	public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
		getGetDoctorLists();
	}

	@Override
	public void onRefresh(@NonNull RefreshLayout refreshLayout) {
	}
});


refreshLayout.autoRefresh();

if (state == HttpMsg.OK) {
	List<Doctor> temp = (List<Doctor>) data;
	if (pageIndex == 0) {
		resultList.clear();
	}
	resultList.addAll(temp);
	adapter.notifyDataSetChanged();
	pageIndex++;
	refreshLayout.setResultSize(temp.size(), pageIndex);
  } else {
	refreshLayout.finishLoadMore(false);
  }
  refreshLayout.refreshComplete();
}

5、关于RecycleView的适配,用的是BRVAH的万能适配器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值