From 6f602b89dd7e9512bbc1f6e942353a458b09b7ca Mon Sep 17 00:00:00 2001 From: stom79 Date: Thu, 25 Oct 2018 14:58:29 +0200 Subject: [PATCH] Fix issue #525 - scroll to bottom after fetching new toots --- .../mastodon/fragments/DisplayStatusFragment.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java index 1af1d890a..9740064ca 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java @@ -94,7 +94,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn private List mutedAccount; private String instanceType; private String search_peertube, remote_channel_name; - + private boolean isFetchingMore; public DisplayStatusFragment(){ } @@ -112,6 +112,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn firstTootsLoaded = true; showPinned = false; showReply = false; + isFetchingMore = false; if (bundle != null) { type = (RetrieveFeedsAsyncTask.Type) bundle.get("type"); targetedId = bundle.getString("targetedId", null); @@ -444,8 +445,13 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn statusListAdapter.notifyItemRangeInserted(position, tmpStatuses.size()); if( tmpStatuses.size() < 3) //If new toots are only two lv_status.scrollToPosition(0); - else - lv_status.scrollToPosition(position+tmpStatuses.size()); + else { + if(isFetchingMore) + lv_status.scrollToPosition(position); + else + lv_status.scrollToPosition(position + tmpStatuses.size()); + isFetchingMore = false; + } } }else { @@ -468,6 +474,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn } swipeRefreshLayout.setRefreshing(false); firstLoad = false; + isFetchingMore = false; } } @@ -705,6 +712,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn } public void fetchMore(String max_id){ + isFetchingMore = true; asyncTask = new RetrieveFeedsAsyncTask(context, type, max_id, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); }