gpt4 book ai didi

android - RecyclerView 分页时跳转到列表中间

转载 作者:行者123 更新时间:2023-12-02 15:08:34 27 4
gpt4 key购买 nike

我已经使用 MVVM 设置了此页面,并使用 RecyclerView 和拉动刷新进行分页。单击此 RecyclerView 中的某些项目将导航到另一个 fragment 。

我的问题是,每当我第一次加载页面并一直向下滚动时,效果都很好。拉动刷新也可以。

但是当我导航到另一个 fragment 并返回时,一直滚动到顶部,滑动刷新:RecyclerView 将跳转到页面中间(位于我单击的项目的右侧)导航到另一个 fragment )

我的 fragment

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val adapter = GroupAdapter<ViewHolder>().apply { add(mainSection) }
val gridLayoutManager = GridLayoutManager(activity, adapter.spanCount)
gridLayoutManager.spanSizeLookup = adapter.spanSizeLookup
with(recyclerView) {
layoutManager = gridLayoutManager
setHasFixedSize(true)
addOnScrollListener(PaginationScrollListener {
viewModel.onEndOfList()
})
}
recyclerView.adapter = adapter


pullToRefresh.apply {
setProgressBackgroundColorSchemeColor(
ContextCompat.getColor(context, R.color.window_level_2)
)
setColorSchemeColors(ContextCompat.getColor(context, R.color.brand_primary))
setOnRefreshListener { viewModel.onRefresh() }
}
}

我的 View 模型

    fun onRefresh() {
page = 0
widgetItems.clear()
_widgetListObservable.postValue(widgetItems)
finishedLoading = false
isFirstFetch = true
getItems()
}

private fun getItems() {
isLoading = true
dataSource.getPage(page)
.subscribeOn(backgroundThread.getScheduler())
.observeOn(mainThread.getScheduler())
.flatMap {
Flowable.fromIterable(it)
.toList()
.toFlowable()
}
.doAfterTerminate {
isLoading = false
}
.subscribe(Consumer {
finishedLoading = it.isEmpty()

if (isFirstFetch && finishedLoading) {
_isMyPaymentsEmptyObservable.postValue(true)
}
widgetItems.addAll(it)
_widgetListObservable.postValue(widgetItems)
page++
isFirstFetch = false
}, {
println(it)
})

编辑当我删除第一个 fragment 中的 swipeToRefresh 上的 onRefreshListener 时,它会起作用。我不知道为什么会发生这种情况?

感谢您的阅读。

最佳答案

尝试将这两个属性添加到 Activity 的父布局中。

android:focusableInTouchMode="true"
android:focusable="true"

RecyclerView 可能会存储您单击的最后一个项目的焦点,或者有时 RecylerView 在数据加载时自动滚动。

关于android - RecyclerView 分页时跳转到列表中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59486946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com