scrollToPosition()在片段中更新RecyclerView时

问题描述 投票:0回答:2

我已经创建了一个列表,该列表使用LiveData从会议室数据库中获取项目。然后使用liveData<List>将此recyclerView绑定到BindingAdapter。列表适配器是listAdapter,而不是`RecyclerView.Adapter。

我需要保持滚动状态的帮助,或者需要以某种方式返回到重新加载recyclerView之前的滚动索引:

//In ViewModel
    val movieList = moviesRepository.movies

..

//in Repo
  val movies: LiveData<List<Movie>> =
    Transformations.map(database.movieDao.getMovies()) {
        it.asDomainModel()
    }

每次数据库更新时,recyclerView都会返回顶部。

这是bindingAdapter和列表的RecyclerView

@BindingAdapter("listData")
fun bindRecyclerView(recyclerView: RecyclerView, data: List<Movie>?) {
    val adapter = recyclerView.adapter as MovieListAdapter
    //Log.d("listData binding", "${data}")
    adapter.submitList(data)
}

我想我需要使用类似recyclerView.smoothScrollToPosition(la.getItemCount());更新发生后,但是我不知道更新发生后如何自动调用它]

recyclerView.smoothScrollToPosition(la.getItemCount());

我列出了一个列表,该列表使用LiveData从Room数据库中获取项目。然后,使用BindingAdapter将此liveData 绑定到recyclerView。列表适配器是listAdapter,而不是`...

android kotlin android-recyclerview android-livedata
2个回答
0
投票
  1. 首先不使用Project Repo ListAdapter具有更优化的适配器RecyclerView


0
投票

弄清楚了。我可以找到的所有示例都使用活动,而不是片段。因此,我要做的就是将其放入相关fragment.kt文件中的onCreateView()函数中。

recyclerView.smoothScrollToPosition(adapter.lastVisiblePosition)
© www.soinside.com 2019 - 2024. All rights reserved.