androidViewModel+;模型更新时的recyclerview滚动跳转(MVVM)

androidViewModel+;模型更新时的recyclerview滚动跳转(MVVM),mvvm,android-recyclerview,viewmodel,android-viewmodel,Mvvm,Android Recyclerview,Viewmodel,Android Viewmodel,我对recyclerview+mvvm实现有一个非常具体的问题 当我在recyclerview中选择一个ListItem时,我的viewmodel类将被单击,它将在ListItem上应用“isselected”标志,加上recyclerview(间接)观察到的MutableLiveData类。这会导致Main活动中的观察者更新recyclerview显示的整个列表 结果是,每当我在recyclerview中选择一个项目时,recyclerview都会向上滚动,(大概)因为整个列表都已更新,它将更

我对recyclerview+mvvm实现有一个非常具体的问题

当我在recyclerview中选择一个
ListItem
时,我的viewmodel类将被单击,它将在
ListItem
上应用“isselected”标志,加上recyclerview(间接)观察到的
MutableLiveData
类。这会导致Main活动中的观察者更新recyclerview显示的整个
列表

结果是,每当我在recyclerview中选择一个项目时,recyclerview都会向上滚动,(大概)因为整个列表都已更新,它将更新后的列表视为一个全新的列表

如何在干净的代码(最好是mvvm模式)中调整此行为


(可能是一种解决方案,其中记录了点击的位置,如果该位置存在,新列表会立即“滚动”到此位置。但如果可能的话,我不知道如何实现这一点。)

这是一个非常常见的问题,但我在谷歌的搜索措辞误导了我

这个答案解决了我的问题:

//add a Parcelable field to save the state
private Parcelable recyclerViewState;

//before updating the adapter with live data
recyclerViewState = recyclerView.getLayoutManager().onSaveInstanceState();

//after updating the adapter with live data
recyclerView.getLayoutManager().onRestoreInstanceState(recyclerViewState);