Verified
Status Update
Comments
yb...@google.com <yb...@google.com>
ta...@gmail.com <ta...@gmail.com> #2
have you any workaround so far? :(
cc...@google.com <cc...@google.com> #3
Fixed in an internal build, will be released in a new alpha version of Paging soon.
The bug is that PositionalDataSources, when placeholders are disabled, are unable to load additional pages.
Sorry, the only reasonable way to workaround the issue is to use placeholders.
The bug is that PositionalDataSources, when placeholders are disabled, are unable to load additional pages.
Sorry, the only reasonable way to workaround the issue is to use placeholders.
al...@gmail.com <al...@gmail.com> #4
Do we have a general ETA for when this fix will hit production? Trying to decide whether to go for another approach or wait for this fix.
cc...@google.com <cc...@google.com> #5
Sorry, the arch components got a bit stuck in our release process. Shipping in the next couple of days, hopefully tomorrow.
al...@gmail.com <al...@gmail.com> #6
No worries, sounds good! Thanks for the awesome work!
[Deleted User] <[Deleted User]> #8
Works great, thanks a ton!
mw...@gmail.com <mw...@gmail.com> #9
I have a problem that I believe is related to this.
Scenario 1:
When I load empty item, onZeroItemLoaded is called once. At that momen user have no data and all is well. But after t minutes the data for users are populated. At this point I try to scroll the Recyclerview and onZeroItemLoaded is never called again. AFAIK, it was supposed to be called. If am wrong can someone correct me?
Scenario 2: User logs into application and there are few items in the server (less than page size set in live page builder). onZeroItemLoaded is called and inserts data in room database, happy time! Then trying to scroll recylerview onItemEndLoaded is not being called. If I close app and start it again, this time onItemEndLoaded get called twice and it never get called again.
I have read all I can on the internet for days and could not find something that either shows of what am doing wrong or missing. So I concluded this might be a bug
Scenario 1:
When I load empty item, onZeroItemLoaded is called once. At that momen user have no data and all is well. But after t minutes the data for users are populated. At this point I try to scroll the Recyclerview and onZeroItemLoaded is never called again. AFAIK, it was supposed to be called. If am wrong can someone correct me?
Scenario 2: User logs into application and there are few items in the server (less than page size set in live page builder). onZeroItemLoaded is called and inserts data in room database, happy time! Then trying to scroll recylerview onItemEndLoaded is not being called. If I close app and start it again, this time onItemEndLoaded get called twice and it never get called again.
I have read all I can on the internet for days and could not find something that either shows of what am doing wrong or missing. So I concluded this might be a bug
yb...@google.com <yb...@google.com> #10
for S1: There is on indication that we can know if data is ready on the server so we cannot call onZeroItems loaded. Attempt the scroll RV won't trigger aynthing since it won't scroll.
for S2: same as above. When the list is loaded the first time, it triggers end load events since we've reched end of the list and laid it out. but after that, no scroll will happen and we don't know your server has more data.
Both of these problems boils down to the fact that your source (server) has more data but you don't know about it. You need to implement it yourself, and if you ever update the database, paging will automatically refresh.
for S2: same as above. When the list is loaded the first time, it triggers end load events since we've reched end of the list and laid it out. but after that, no scroll will happen and we don't know your server has more data.
Both of these problems boils down to the fact that your source (server) has more data but you don't know about it. You need to implement it yourself, and if you ever update the database, paging will automatically refresh.
mw...@gmail.com <mw...@gmail.com> #11
I think I misunderstood how the paging library works in such scenario. Can you help me understand when does paging kick in in let say scenario2? Is it only when items are more than page size defined in config?
I agree that I should write logic to check on the server. I had false assumption that trying to scroll triggers everything. I was wrong! I would appreciate your help on this question. I just don't want to reinvent the whole thing that paging already does!
I agree that I should write logic to check on the server. I had false assumption that trying to scroll triggers everything. I was wrong! I would appreciate your help on this question. I just don't want to reinvent the whole thing that paging already does!
yb...@google.com <yb...@google.com> #12
for sceneario 2, you really need a custom solution depending on your backend. There is no way paging can know the data on your server changed besides the invalidate() in the DataSource.
usually, these things are implemented as pull to refresh where user triggers a refresh and then you go and fetch new data.
Alternatively, your backend could be sending a push notification when data changes. It is usually unnecessary / overkill but depends on your use case.
Some apps handle this by having a persistent connection to their server to get these notifications and only keep that connection when app is in the foreground. Again, you need to implement it since it heavily relies on your backend.
usually, these things are implemented as pull to refresh where user triggers a refresh and then you go and fetch new data.
Alternatively, your backend could be sending a push notification when data changes. It is usually unnecessary / overkill but depends on your use case.
Some apps handle this by having a persistent connection to their server to get these notifications and only keep that connection when app is in the foreground. Again, you need to implement it since it heavily relies on your backend.
mw...@gmail.com <mw...@gmail.com> #13
Thank you for the comment. I went with refresh path and it's OK.
Description