happycoder
happycoder
同样遇到这样的问题,请问下您解决了没有
> `#setDiffNewData`这个使用异步diff `BrvahAsyncDiffer#submitList`,应该是参考的官方的`AsyncListDiffer#submitList`。 但是官方的`AsyncListDiffer#submitList`,其中使用的是 unmodifiable list `mReadOnlyList`(`AsyncListDiffer#getCurrentList`返回的数据源也是这个,外部是不能修改的)。 > > 但是BRVAH目前的使用中,`AsyncListDiffer#submitList`使用的是`val oldList: List = adapter.data`,但是这个`adapter.data`在外部是可以对数据list进行`add/remove`之类的操作的。 > > 这样就导致了当前issue的问题,在后台线程进行diff的过程中,其他地方主线程对`adapter.data`数据源进行`add/remove`操作之后,后台线程处理中的`BrvahAsyncDiffer#submitList`中的`val oldList: List = adapter.data`就被修改了,导致`getOldListSize`是原先的数据总数,但是`oldList#get(index)`时是其他地方主线程更新后的数据list,list的数据已经变了,就有可能导致IndexOutOfBoundsException或者其他问题了。
@yangxu4536 请问一下你这个最后怎么解决的