即使我没有刷 RecyclerView,loadAfter() 也无法停止。它一直在调用 onBindView->loadAfter()
我尝试调试,找到这些:方法loadAroundInternal in class ContiguousPagedList
int appendItems = getAppendItemsRequested(mConfig.prefetchDistance, index, mStorage.getLeadingNullCount() + mStorage.getStorageCount());
索引保持++,而recyclerView中的getBindView更大,appendItem总是> 0
我不确定,但我想也许
network->appendPage->notifyInserted->bindView->loadAfter->network
然后recyclerView适配器执行onBindView。但是调用了哪个位置的bindViewHolder。所以停不下来。
我不知道我是否正确。我不知道如何解决它。
下面是我写的一些相关代码:</p>
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
VB binding = DataBindingUtil.getBinding(holder.itemView);
setData(binding, getItem(position));
binding.executePendingBindings();
}
在我自己的扩展PageKeyedDataSource的PagingDataSource中
@Override
public void loadAfter(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Integer, T> callback) {
singleCreator.createSingle(params.key, params.requestedLoadSize)
.subscribe(new SingleObserver<Page<T>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(Page<T> tPage) {
callback.onResult(tPage.list, tPage.pageNumber + 1);
}
@Override
public void onError(Throwable e) {
}
});
}
public interface SingleCreator<T> {
SingleSubscribeProxy<Page<T>> createSingle(int page, int pageSize);
}
如果其他事情需要,我会编辑问题
======================================
补充信息:我发现如果我给recyclerView的高度设置一个绝对值,比如100dp,就可以了。但是在 wrap_content 和 match_parent 时会出现问题。
所以现在的问题是:当nestedScrollView中有2个recyclerViews并且带有wrap_content或match_parent时,bindView不能停止loadAfter(),这是一种分页库的方法。