Dbrant has uploaded a new change for review. https://gerrit.wikimedia.org/r/295708
Change subject: Fetch more feed contents automatically upon scroll. ...................................................................... Fetch more feed contents automatically upon scroll. This adds the piece of Feed interactivity where it automatically requests more feed content when the user scrolls down sufficiently far. Quick implementation note: I put the call to notifyDataSetChanged() into a Runnable that is posted to the message queue. This is because the request to fetch more feed contents is made during the view-binding phase of the RecyclerView. Since some feed cards may return their contents immediately (in the same thread), it may cause the RecyclerAdapter to be invalidated while it's still laying out its contents. This will ensure that notifyDataSetChanged() will get called only when it finishes its previous layout. Change-Id: I2667ad4aa4c59260ed117c4624aa413306b6d1ec --- M app/src/main/java/org/wikipedia/feed/FeedFragment.java M app/src/main/java/org/wikipedia/feed/FeedViewCallback.java M app/src/main/java/org/wikipedia/feed/view/FeedRecyclerAdapter.java M app/src/main/java/org/wikipedia/feed/view/FeedView.java 4 files changed, 19 insertions(+), 5 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/08/295708/1 diff --git a/app/src/main/java/org/wikipedia/feed/FeedFragment.java b/app/src/main/java/org/wikipedia/feed/FeedFragment.java index e936b22..a1f3c9b 100644 --- a/app/src/main/java/org/wikipedia/feed/FeedFragment.java +++ b/app/src/main/java/org/wikipedia/feed/FeedFragment.java @@ -114,10 +114,9 @@ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_feed_search: - - // TODO: remove - coordinator.more(app.getSite()); - + if (getCallback() != null) { + getCallback().onFeedSearchRequested(); + } return true; default: return super.onOptionsItemSelected(item); @@ -140,6 +139,11 @@ private class FeedCallback implements FeedViewCallback { @Override + public void onRequestMore() { + coordinator.more(app.getSite()); + } + + @Override public void onSelectPage(@NonNull PageTitle title) { if (getCallback() != null) { getCallback().onFeedSelectPage(title); diff --git a/app/src/main/java/org/wikipedia/feed/FeedViewCallback.java b/app/src/main/java/org/wikipedia/feed/FeedViewCallback.java index 1816d9a..5a16e15 100644 --- a/app/src/main/java/org/wikipedia/feed/FeedViewCallback.java +++ b/app/src/main/java/org/wikipedia/feed/FeedViewCallback.java @@ -5,6 +5,7 @@ import org.wikipedia.page.PageTitle; public interface FeedViewCallback { + void onRequestMore(); void onSelectPage(@NonNull PageTitle title); void onAddPageToList(@NonNull PageTitle title); void onSearchRequested(); diff --git a/app/src/main/java/org/wikipedia/feed/view/FeedRecyclerAdapter.java b/app/src/main/java/org/wikipedia/feed/view/FeedRecyclerAdapter.java index bdc84d8..dba5a73 100644 --- a/app/src/main/java/org/wikipedia/feed/view/FeedRecyclerAdapter.java +++ b/app/src/main/java/org/wikipedia/feed/view/FeedRecyclerAdapter.java @@ -45,6 +45,10 @@ Card item = item(position); CardView view = holder.getView(); + if (position == getItemCount() - 1 && callback != null) { + callback.onRequestMore(); + } + if (isCardAssociatedWithView(view, item)) { // Don't bother reloading the same card into the same view return; diff --git a/app/src/main/java/org/wikipedia/feed/view/FeedView.java b/app/src/main/java/org/wikipedia/feed/view/FeedView.java index 27b0af1..ce12cb5 100644 --- a/app/src/main/java/org/wikipedia/feed/view/FeedView.java +++ b/app/src/main/java/org/wikipedia/feed/view/FeedView.java @@ -41,7 +41,12 @@ } public void update() { - recyclerAdapter.notifyDataSetChanged(); + post(new Runnable() { + @Override + public void run() { + recyclerAdapter.notifyDataSetChanged(); + } + }); } private void init() { -- To view, visit https://gerrit.wikimedia.org/r/295708 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2667ad4aa4c59260ed117c4624aa413306b6d1ec Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits