PagingLibrary with recyclerView can not stop loadAfter()
loadAfter() can't stop even though I didn't swipe the RecyclerView.
It keeps calling onBindView->loadAfter()
I tried to debug, find these:
method loadAroundInternal in class ContiguousPagedList
int appendItems = getAppendItemsRequested(mConfig.prefetchDistance, index, mStorage.getLeadingNullCount() + mStorage.getStorageCount());
index keep ++ while getBindView in recyclerView is being bigger
the appendItem is always >0
I'm not sure, but I think maybe
network->appendPage->notifyInserted->bindView->loadAfter->network
then the recyclerView adapter execute onBindView.But the bindViewHolder which position should't call called. So it can't stop.
I don't know whether I'm right or not.And I don't know how to fix it.
below are some relevant code I wrote:
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
VB binding = DataBindingUtil.getBinding(holder.itemView);
setData(binding, getItem(position));
binding.executePendingBindings();
}
In my own PagingDataSource which extends 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);
}
If other things need, I will edit the question
=====================================
Add message:I found if I set an absolute value for recyclerView's height, such as 100dp, It works fine. Butwork with problem when wrap_content and match_parent.
So the problem now is:when 2 recyclerViews in nestedScrollView and with a wrap_content or match_parent, the bindView can't stop loadAfter() which is a method of paging library.
android android-recyclerview android-paging
add a comment |
loadAfter() can't stop even though I didn't swipe the RecyclerView.
It keeps calling onBindView->loadAfter()
I tried to debug, find these:
method loadAroundInternal in class ContiguousPagedList
int appendItems = getAppendItemsRequested(mConfig.prefetchDistance, index, mStorage.getLeadingNullCount() + mStorage.getStorageCount());
index keep ++ while getBindView in recyclerView is being bigger
the appendItem is always >0
I'm not sure, but I think maybe
network->appendPage->notifyInserted->bindView->loadAfter->network
then the recyclerView adapter execute onBindView.But the bindViewHolder which position should't call called. So it can't stop.
I don't know whether I'm right or not.And I don't know how to fix it.
below are some relevant code I wrote:
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
VB binding = DataBindingUtil.getBinding(holder.itemView);
setData(binding, getItem(position));
binding.executePendingBindings();
}
In my own PagingDataSource which extends 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);
}
If other things need, I will edit the question
=====================================
Add message:I found if I set an absolute value for recyclerView's height, such as 100dp, It works fine. Butwork with problem when wrap_content and match_parent.
So the problem now is:when 2 recyclerViews in nestedScrollView and with a wrap_content or match_parent, the bindView can't stop loadAfter() which is a method of paging library.
android android-recyclerview android-paging
add a comment |
loadAfter() can't stop even though I didn't swipe the RecyclerView.
It keeps calling onBindView->loadAfter()
I tried to debug, find these:
method loadAroundInternal in class ContiguousPagedList
int appendItems = getAppendItemsRequested(mConfig.prefetchDistance, index, mStorage.getLeadingNullCount() + mStorage.getStorageCount());
index keep ++ while getBindView in recyclerView is being bigger
the appendItem is always >0
I'm not sure, but I think maybe
network->appendPage->notifyInserted->bindView->loadAfter->network
then the recyclerView adapter execute onBindView.But the bindViewHolder which position should't call called. So it can't stop.
I don't know whether I'm right or not.And I don't know how to fix it.
below are some relevant code I wrote:
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
VB binding = DataBindingUtil.getBinding(holder.itemView);
setData(binding, getItem(position));
binding.executePendingBindings();
}
In my own PagingDataSource which extends 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);
}
If other things need, I will edit the question
=====================================
Add message:I found if I set an absolute value for recyclerView's height, such as 100dp, It works fine. Butwork with problem when wrap_content and match_parent.
So the problem now is:when 2 recyclerViews in nestedScrollView and with a wrap_content or match_parent, the bindView can't stop loadAfter() which is a method of paging library.
android android-recyclerview android-paging
loadAfter() can't stop even though I didn't swipe the RecyclerView.
It keeps calling onBindView->loadAfter()
I tried to debug, find these:
method loadAroundInternal in class ContiguousPagedList
int appendItems = getAppendItemsRequested(mConfig.prefetchDistance, index, mStorage.getLeadingNullCount() + mStorage.getStorageCount());
index keep ++ while getBindView in recyclerView is being bigger
the appendItem is always >0
I'm not sure, but I think maybe
network->appendPage->notifyInserted->bindView->loadAfter->network
then the recyclerView adapter execute onBindView.But the bindViewHolder which position should't call called. So it can't stop.
I don't know whether I'm right or not.And I don't know how to fix it.
below are some relevant code I wrote:
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
VB binding = DataBindingUtil.getBinding(holder.itemView);
setData(binding, getItem(position));
binding.executePendingBindings();
}
In my own PagingDataSource which extends 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);
}
If other things need, I will edit the question
=====================================
Add message:I found if I set an absolute value for recyclerView's height, such as 100dp, It works fine. Butwork with problem when wrap_content and match_parent.
So the problem now is:when 2 recyclerViews in nestedScrollView and with a wrap_content or match_parent, the bindView can't stop loadAfter() which is a method of paging library.
android android-recyclerview android-paging
android android-recyclerview android-paging
edited Nov 15 '18 at 3:48
user2545386
asked Nov 15 '18 at 3:05
user2545386user2545386
879
879
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
So the reason why It happened
When a network result backs, the recycleView refresh.
Since it's in a nestedScrollView, it has no exact height.
Then onSizeChanged->getItem->network.
For me, the solution is
write a custom linearLayout which implements NestedScrollingParent2;
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311826%2fpaginglibrary-with-recyclerview-can-not-stop-loadafter%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
So the reason why It happened
When a network result backs, the recycleView refresh.
Since it's in a nestedScrollView, it has no exact height.
Then onSizeChanged->getItem->network.
For me, the solution is
write a custom linearLayout which implements NestedScrollingParent2;
add a comment |
So the reason why It happened
When a network result backs, the recycleView refresh.
Since it's in a nestedScrollView, it has no exact height.
Then onSizeChanged->getItem->network.
For me, the solution is
write a custom linearLayout which implements NestedScrollingParent2;
add a comment |
So the reason why It happened
When a network result backs, the recycleView refresh.
Since it's in a nestedScrollView, it has no exact height.
Then onSizeChanged->getItem->network.
For me, the solution is
write a custom linearLayout which implements NestedScrollingParent2;
So the reason why It happened
When a network result backs, the recycleView refresh.
Since it's in a nestedScrollView, it has no exact height.
Then onSizeChanged->getItem->network.
For me, the solution is
write a custom linearLayout which implements NestedScrollingParent2;
answered Nov 18 '18 at 15:04
user2545386user2545386
879
879
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311826%2fpaginglibrary-with-recyclerview-can-not-stop-loadafter%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown