Ozik  Abdullaev
Ozik Abdullaev

Reputation: 1026

RecyclerView saving state

Anyone have issue that RecyclerView doesn't save scroll position after changing orientation?

mMyAdapter = new MyAdapter(context, MyAdapter.generateKey(this), savedInstanceState);
mMyAdapter.setHasStableIds(true);

mLayoutManager = new LinearLayoutManager(context, VERTICAL, false);
int padding = ResourceUtils.dp2px(context, 8);
mRecycleView.setClipToPadding(false);
mRecycleView.setPadding(0, ResourceUtils.getPixelSize(R.dimen.toolbar_height), 0, padding);
mRecycleView.setOverScrollMode(View.OVER_SCROLL_ALWAYS);
mRecycleView.setLayoutManager(mLayoutManager);
mRecycleView.setAdapter(MyAdapter);
mRecycleView.setHasFixedSize(false);
mRecycleView.setOnScrollListener(mScrollManager); // only to hide Toolbar on scroll

so i'm not modifed onDestroy or OnSaveInstanceState methods, only saving adapters data, so when i'm rotating phone, scroll position of RecyclerView reseting, some advice?

Upvotes: 1

Views: 5256

Answers (2)

Davideas
Davideas

Reputation: 3276

Recently I've improved and created a FlexibleAdapter pattern for all RecyclerView. It is able to maintain the state after rotation.

Very simple to use, just copy 2 classes in your common files + some xml in order to enable the selection (Single/Multi) as it was for ListView.

Please have a look at the description and full working example: https://github.com/davideas/FlexibleAdapter

Upvotes: 2

Ozik  Abdullaev
Ozik Abdullaev

Reputation: 1026

I understood where i had mistake, i used RecyclerView from

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    //used this instance of recycler view
    mRecyclerView = inflater.inflate(R.layout.recycle_fragment, container, false);
    return mRecyclerView;
}

but need to

 @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // instead of searching it after view created
        mRecycleView = ButterKnife.findById(getView(), R.id.recycler_view);
}

Problem solved

Upvotes: 0

Related Questions