【问题标题】:Heterogenous Recyclerview: Retain scroll positionHeterogeneous Recyclerview:保留滚动位置
【发布时间】:2018-11-22 16:12:54
【问题描述】:

我在垂直 Recyclerview 中有水平 RecyclerViews 作为我的 HomeFragment。

每次我通过单击水平 RecyclerView 中的项目并返回 HomeFragment 导航到不同的片段时,我的水平 RecyclerView 都会滚动到第一个项目,并且不会保留最后一个状态(或滚动位置)。当我返回 HomeFragment 时,如何才能实现这一点,滚动位置与导航到不同 Fragment 之前的位置相同?

我遇到过使用 LinearLayoutManager 的 onSaveInstanceState() 和 onRestoreInstanceState() 但这是我的代码,我在垂直回收视图的 onBind() 上添加了水平回收视图,我不知道在哪里使用这些方法。

void onBind(HomeData data) {
    binding.setVariable(BR.homedata, data);
    binding.executePendingBindings();

    if (binding instanceof ItemMovieListBinding) {
        MoviesAdapter adapter = new MoviesAdapter(new MovieDiffCallback(), clickCallback);

        ((ItemMovieListBinding) binding).rvMovieList.setLayoutManager(new LinearLayoutManager(context, RecyclerView.HORIZONTAL, false));
        ((ItemMovieListBinding) binding).rvMovieList.setAdapter(adapter);

        adapter.submitList((List<Movie>) data.getData());
    }
}

【问题讨论】:

标签: android android-recyclerview


【解决方案1】:

你可以只记住位置,哪个用户离开屏幕并恢复它:

rvMovieList.scrollToPosition(yourPosition);

或者您可以在onActivityCreated 中初始化您的适配器和recyclerView。这将帮助您避免重复视图。

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 2011-10-22
    相关资源
    最近更新 更多