loadAfter () не может остановиться, хотя я не проводил RecyclerView.
Он продолжает вызывать onBindView-> loadAfter ()
Я попытался отладить, найти эти:
метод loadAroundInternal в классе ContiguousPagedList
int appendItems = getAppendItemsRequested(mConfig.prefetchDistance, index, mStorage.getLeadingNullCount() + mStorage.getStorageCount());
index держать ++, в то время как getBindView в recyclerView становится все больше
appendItem всегда> 0
Я не уверен, но думаю, может быть
network->appendPage->notifyInserted->bindView->loadAfter->network
тогда адаптер recyclerView выполняет onBindView. Но bindViewHolder, положение которого не должно вызываться, вызывается. Так что это не может остановиться.
Я не знаю, прав я или нет. И я не знаю, как это исправить.
ниже приведен соответствующий код, который я написал:
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
VB binding = DataBindingUtil.getBinding(holder.itemView);
setData(binding, getItem(position));
binding.executePendingBindings();
}
В моем собственном PagingDataSource , который расширяет PageKeyedDataSource
@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.
Таким образом, проблема теперь заключается в том, что когда 2 recyclerViews в nestedScrollView и с wrap_content или match_parent, bindView не может остановить loadAfter (), который является методом библиотеки подкачки.