Kotlin: Pagination Recyclerview не работает после разметки обновления смахивания - PullRequest
0 голосов
/ 21 мая 2019

нумерация страниц Recyclerview работает хорошо, но там, где я делаю SwipeRefreshLayout, нумерация страниц разбилась и работает не так, как ожидалось.

Этот OnScrollListener из Recyclerview

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 голосов
/ 21 мая 2019

Могу ли я знать, что вы выполняете по методу обновления (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)}
    }
...