异构Recyclerview:保留滚动位置

时间:2018-11-22 16:12:54

标签: android android-recyclerview

我在垂直Recyclerview中有水平RecyclerViews作为我的HomeFragment。 enter image description here

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

我曾经使用LinearLayoutManager的onSaveInstanceState()onRestoreInstanceState()遇到问题,但这是我的代码,我在垂直recyclerview的onBind()上添加了水平recyclerviews,但我不知道在哪里使用那些方法。

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());
    }
}

1 个答案:

答案 0 :(得分:0)

您只需记住位置,哪个用户才离开屏幕并恢复它:

Range(D3:H6)

或者您可以在while($i = mysqli_fetch_array($reusult)) { echo" <div class=\"form-group row\"> <label type=\"hidden\" for=\"exampleInputEmail2\" class=\"col-md-3\" id=\"mode\" name=\"mode\" value="; echo $i['moduleCode'];echo " > "; echo $i['moduleName']; echo " </label> <div class=\"col-md-4\">"; addDropDownRequired('modules','modules','descr','id','moduledropdownperm',false); echo " </div> </div>"; } } 中初始化适配器和recyclerView。这将帮助您避免重新创建视图。