From 09d8443e98f98041448b25d0edda171916c827e6 Mon Sep 17 00:00:00 2001 From: Vinayak Aggarwal <56196007+vinayak0505@users.noreply.github.com> Date: Thu, 15 Apr 2021 20:15:10 +0530 Subject: [PATCH] Changes made (#4354) --- .../explore/ExploreListRootFragment.java | 3 +- .../media/MediaDetailPagerFragment.java | 45 +++++++++++-------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java index 19d9effc7..8d5bc3c36 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java @@ -117,8 +117,9 @@ public class ExploreListRootFragment extends CommonsDaggerSupportFragment implem container.setVisibility(View.VISIBLE); ((ExploreFragment)getParentFragment()).tabLayout.setVisibility(View.GONE); mediaDetails = new MediaDetailPagerFragment(false, true); - mediaDetails.showImage(position); + ((ExploreFragment) getParentFragment()).setScroll(false); setFragment(mediaDetails, listFragment); + mediaDetails.showImage(position); } /** diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index 4c7f16c11..178fdb931 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -92,24 +92,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple adapter = new MediaDetailAdapter(getChildFragmentManager()); ((BaseActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); + pager.setAdapter(adapter); if (savedInstanceState != null) { final int pageNumber = savedInstanceState.getInt("current-page"); - // Adapter doesn't seem to be loading immediately. - // Dear God, please forgive us for our sins - view.postDelayed(() -> { - pager.setAdapter(adapter); - pager.setCurrentItem(pageNumber, false); + pager.setCurrentItem(pageNumber, false); + getActivity().invalidateOptionsMenu(); + adapter.notifyDataSetChanged(); - if (getActivity() == null) { - Timber.d("Returning as activity is destroyed!"); - return; - } - - getActivity().supportInvalidateOptionsMenu(); - adapter.notifyDataSetChanged(); - }, 100); - } else { - pager.setAdapter(adapter); } if (getActivity() instanceof MainActivity) { ((MainActivity)getActivity()).hideTabs(); @@ -304,13 +293,31 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple public void showImage(int i, boolean isWikipediaButtonDisplayed) { this.isWikipediaButtonDisplayed = isWikipediaButtonDisplayed; - Handler handler = new Handler(); - handler.postDelayed(() -> pager.setCurrentItem(i), 5); + setViewPagerCurrentItem(i); } public void showImage(int i) { - Handler handler = new Handler(); - handler.postDelayed(() -> pager.setCurrentItem(i), 5); + setViewPagerCurrentItem(i); + } + + /** + * This function waits for the item to load then sets the item to current item + * @param position current item that to be shown + */ + private void setViewPagerCurrentItem(int position) { + final Boolean[] currentItemNotShown = {true}; + Runnable runnable = new Runnable() { + @Override + public void run() { + while(currentItemNotShown[0]){ + if(adapter.getCount() > position){ + pager.setCurrentItem(position, false); + currentItemNotShown[0] = false; + } + } + } + }; + new Thread(runnable).start(); } /**