我在垂直Recyclerview中有水平RecyclerViews作为我的HomeFragment。
每次我通过单击水平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());
}
}
答案 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。这将帮助您避免重新创建视图。