Kotlin:分页Recyclerview在滑动刷新布局后不起作用

时间:2019-05-21 03:39:22

标签: android kotlin android-recyclerview pagination

Recyclerview分页效果很好,但是在SwipeRefreshLayout做的地方,分页失败了,无法按预期工作。

Recyclerview的OnScrollListener

rv_spesialisasi.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                val linearLayoutManager = recyclerView
                    ?.layoutManager as LinearLayoutManager?
                if (!loading && linearLayoutManager!!.itemCount <= linearLayoutManager.findLastVisibleItemPosition() + 2) {
                    loading = true
                    refresing(true)
                    viewModel.loadIconSpesialisasi(currentpage)
                }
            }
        })

这是为了刷新

private fun setRefreshing() {
        sr_spesialisasi.setOnRefreshListener {
            currentpage = 0
            loading = false
            listDataGlobal.clear()
            adapter.clearData()

            viewModel.loadIconSpesialisasi(currentpage)
        }
    }

我在Java中尝试过,效果很好,但在Kotlin中不起作用。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我可以知道您在refresing(true)方法下执行的操作吗。

如果您正在使用或显示滑动布局的加载器作为加载指示器,并且为此,如果您调用swipeLayout.isRefreshing = true,则将显示加载器,但还会触发onRefreshListener(),在这种情况下,它将调用

sr_spesialisasi.setOnRefreshListener {
        currentpage = 0
        loading = false
        listDataGlobal.clear()
        adapter.clearData()

        viewModel.loadIconSpesialisasi(currentpage)
    }

此方法,它再次重新加载到第一页。

要使其正常工作,请使用这样的布尔值。isRealRefreshIsOn = false 当您想要刷新时,请使其变为真。

 sr_spesialisasi.setOnRefreshListener {
       if(isRealRefreshIsOn){
        currentpage = 0
        loading = false
        listDataGlobal.clear()
        adapter.clearData()

        viewModel.loadIconSpesialisasi(currentpage)}
    }