SwipeRefreshLayout、RecyclerView、BaseRecyclerViewAdapterHelper 三者组合的刷新加载View

这里是利用系统的 SwipeRefreshLayout,RecyclerView ,加上开源库 BaseRecyclerViewAdapterHelper 组合而成的一个View ,可控制是否刷新,加载,不用每次都去写一个 SwipeRefreshLayout 嵌套 RecyclerView 。

使用 RecyclerView 和 BaseRecyclerViewAdapterHelper 版本如下:

implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'

效果图是比较简单的:
这里写图片描述

来看一下实现代码:

   private fun initView() {
        // 模拟页面初始化数据请求,
        onRefresh()
//        mList.addAll(getList())

        initAdapter()
        // 初始化相关配置
        activity_swipe_refresh.initOptions(object : SwipeRefreshView.ConfigOptions {

            override fun configAdapter(): BaseQuickAdapter<*, BaseViewHolder> {
                /**
                 * 初始化 Adapter ,此处可以在 return 之前对 Adapter 进行一系列的需求配置。 比如 setEmptyView 等等~
                 *
                 * getAdapter() 得到的是此处设置的 adapter
                 */
                return mAdapter
            }

            override fun layoutManager(): RecyclerView.LayoutManager = LinearLayoutManager(this@SwipeRefreshActivity)

            override fun configRecyclerView(recyclerView: RecyclerView) {
                /**
                 * 这里可进行一些你想要的 RecyclerView 设置, 此方法为非必选
                 *
                 * 不想实现此方法,也可通过 activity_swipe_refresh.getRecyclerView() 来获取 RecyclerView
                 */
                super.configRecyclerView(recyclerView)
            }

            override fun configSwipeRefreshLayout(refreshLayout: SwipeRefreshLayout) {
                /**
                 * 这里可进行一些你想要的 SwipeRefreshLayout 相关设置,比如刷新的颜色,背景色
                 *
                 * 此方法为非必选
                 *
                 * 不想实现此方法,也可通过 activity_swipe_refresh.getSwipeRefreshLayout() 来获取 SwipeRefreshLayout
                 */
                super.configSwipeRefreshLayout(refreshLayout)
            }

            override fun setEnableLoadMore(): Boolean {
                /**
                 * 是否可加载更多  该方法非必须,默认 false
                 *  等同于 setEnableRefresh(boolean)
                 */
                return super.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以给你提供一个简单的实现方式。 首先,在你的布局文件中添加 SwipeRefreshLayout 和 GridView: ```xml <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3"/> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> ``` 然后,在你的代码中获取 SwipeRefreshLayout 和 GridView 的实例,并为 SwipeRefreshLayout 设置 OnRefreshListener: ```java SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout); GridView gridView = findViewById(R.id.gridView); swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { // 在这里处理下拉刷新的逻辑 } }); ``` 接着,为 GridView 设置 OnScrollListener,并在 onScrollStateChanged 方法中处理上拉加载的逻辑: ```java gridView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && gridView.getLastVisiblePosition() == gridView.getAdapter().getCount() - 1) { // 在这里处理上拉加载的逻辑 } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); ``` 在上拉加载和下拉刷新完成后,别忘了调用 SwipeRefreshLayout 的 setRefreshing(false) 方法来停止刷新: ```java swipeRefreshLayout.setRefreshing(false); ``` 以上就是一个简单的 SwipeRefreshLayout 和 GridView 的上拉刷新下拉加载的实现方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值