我正在使用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 语句,该语句导致异常:
在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
时才会发生这种情况。
我错过了什么?
编辑:我正在使用 com.google.android.material:material:1.1.0-alpha08
中提供的 androidx.viewpager2.widget.ViewPager2
setCurrentItem
时实际上没有什么可以滚动的。 - user11566289