我正在使用 ViewPager2、Kotlin 和 AndroidX。当适配器不在索引 0 并且我更改适配器列表并将当前项目设置为索引 0 时,将引发异常。
java.lang.IllegalStateException: Design assumption violated.
at androidx.viewpager2.widget.ViewPager2.updateCurrentItem(ViewPager2.java:538)
at androidx.viewpager2.widget.ViewPager2$4.onAnimationsFinished(ViewPager2.java:518)
at androidx.recyclerview.widget.RecyclerView$ItemAnimator.isRunning(RecyclerView.java:13244)
at androidx.viewpager2.widget.ViewPager2.onLayout(ViewPager2.java:515)
at android.view.View.layout(View.java:15596)
在 ViewPager2 的第 537 行有一个 if 导致异常:
// Extra checks verifying assumptions
// TODO: remove after testing
View snapView1 = mPagerSnapHelper.findSnapView(mLayoutManager);
View snapView2 = mLayoutManager.findViewByPosition(snapPosition);
if (snapView1 != snapView2) {
throw new IllegalStateException("Design assumption violated.");
}
这就是我更新适配器列表的方式:
adapter.list = newList
adapter.notifyDataSetChanged()
viewpager.setCurrentItem(0, true)
仅当smoothScroll
设置为true
我错过了什么?
编辑:
我正在androidx.viewpager2.widget.ViewPager2
使用com.google.android.material:material:1.1.0-alpha08