RecyclerView
在fragment
销毁后,恢复状态都会自动滑动到第一位。
@Override
public void onSaveInstanceState(Bundle outState) {
mGridLayoutState = gridLayoutManager.onSaveInstanceState();
outState.putParcelable(RECYCLERVIEW_LATOUTSTATE,mGridLayoutState);
outState.putParcelableArrayList(RECYCLERVIEW_LAYOUTCONTENT,(ArrayList<? extends Parcelable>)mList);
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
if (savedInstanceState!=null){
List<MovieData.ResultsBean> temp = savedInstanceState.getParcelableArrayList(RECYCLERVIEW_LAYOUTCONTENT);
if (temp!=null) {
mList.addAll(temp);
}
mGridLayoutState = savedInstanceState.getParcelable(RECYCLERVIEW_LATOUTSTATE);
page = savedInstanceState.getInt(CURRENT_PAGE);
}
super.onViewStateRestored(savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
if (mGridLayoutState!=null) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
gridLayoutManager.onRestoreInstanceState(mGridLayoutState);
}
},400);
}
}
如果使用了 handler 来执行的,是不会出现滑动到第一个位置的。
出现滑动到第一个位置是因为恢复状态时,数据还没有加载成功吗?
有没有什么办法可以更好的解决这个问题 类似于这样的 继承的 RecyclerView 继承 Recyclerview 的方法我尝试了也是没有成功。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.