Skip to content

Instantly share code, notes, and snippets.

@truedem
Last active September 1, 2021 06:55
Show Gist options
  • Save truedem/662a420e12741bfbc6330ac2f5f4f822 to your computer and use it in GitHub Desktop.
Save truedem/662a420e12741bfbc6330ac2f5f4f822 to your computer and use it in GitHub Desktop.
Save / restore recyclerview state for Android (after screen rotation) - example
private val ARGS_SCROLL_STATE = "recyclerState"
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable(ARGS_SCROLL_STATE, recyclerView.getLayoutManager()?.onSaveInstanceState())
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
var recyclerViewState : Parcelable? = savedInstanceState?.getParcelable(ARGS_SCROLL_STATE)
val recycler = RecyclerDBGeneric<EntityDBItem>(R.layout.card_history)
recyclerView.apply {
layoutManager = LinearLayoutManager(context)
adapter = recycler
}
viewModel.dbItemsList.observe(viewLifecycleOwner, Observer {
// showToast("Tasks: " + it.size)
recycler.setItemList(it)
recyclerViewState?.let {
recyclerView.getLayoutManager()?.onRestoreInstanceState(it)
recyclerViewState = null // to prevent state restoration on list updates
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment