我有一个包含 swipeRefreshLayout
和无限 recyclerView
的碎片。我的碎片布局代码类似于:
<androidx.constraintlayout.widget.ConstraintLayout
.
.
.
android:layout_height="match_parent"
android:layout_width="match_parent"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
.
.
.
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" >
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_main_news"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
我在onViewCreated()
中设置了recyclerView的适配器,并在onResume()
中调用notifyDataSetChanged()
。在一些设备上,比如三星Galaxy A5,当用户返回到片段并调用notifyDataSetChanged
后,recyclerView
会移到顶部并显示第一个项目。
我该如何防止这种情况发生? 提前感谢。
更新: 这是我的onResume()
代码,它调用了notifyDataSetChanged()
override fun onResume() {
super.onResume()
if (rv.adapter != null)
(rv.adapter as MyAdapter).apply {
fontSize = Options.getFontSize()
notifyDataSetChanged()
}
}