Android 差异以及何时使用SortedList<;T>';是s updateItemAt()还是RecreactePositionFiteMat()方法?

Android 差异以及何时使用SortedList<;T>';是s updateItemAt()还是RecreactePositionFiteMat()方法?,android,Android,问题1 我正在查看上使用SortedList和RecyclerView的示例代码 在第127行,复选框状态更改后,使用了重新计算位置fitemat()方法。SortedList的javadocs说明重新计算位置fitemat()用于调整项目位置,而无需触发onChanged()回调。必要时,updateItemAt()将调用onChanged()和/或onMoved() 在示例代码的情况下,项目的字段boolean mIsDone已更改。我认为updateItemAt()在这里更合适 问题2(相

问题1

我正在查看上使用SortedList和RecyclerView的示例代码

在第127行,复选框状态更改后,使用了
重新计算位置fitemat()
方法。
SortedList
的javadocs说明
重新计算位置fitemat()
用于调整项目位置,而无需触发
onChanged()
回调。必要时,
updateItemAt()
将调用
onChanged()
和/或
onMoved()

在示例代码的情况下,项目的字段
boolean mIsDone
已更改。我认为
updateItemAt()
在这里更合适

问题2(相关)

我尝试在排序列表中使用
updateItemAt()
,但有时
java.lang.IllegalStateException:在RecyclerView计算布局或触发滚动时无法调用此方法,我发现示例代码中的第122-125、152-154行有助于避免异常。我认为复选框选中状态更改事件只能在用户选中/取消选中复选框时发生。为什么这些线是必要的?有时,随机点击或滚动远离复选框的事件会触发事件