Skip to content

Commit bebc4af

Browse files
authored
Changes made (commons-app#4354)
1 parent eea3f82 commit bebc4af

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ public void onMediaClicked(int position) {
112112
container.setVisibility(View.VISIBLE);
113113
((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.GONE);
114114
mediaDetails = new MediaDetailPagerFragment(false, true);
115-
mediaDetails.showImage(position);
116115
((ExploreFragment) getParentFragment()).setScroll(false);
117116
setFragment(mediaDetails, listFragment);
117+
mediaDetails.showImage(position);
118118
}
119119

120120
/**

app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,24 +105,13 @@ public View onCreateView(LayoutInflater inflater,
105105
((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
106106
}
107107

108+
pager.setAdapter(adapter);
108109
if (savedInstanceState != null) {
109110
final int pageNumber = savedInstanceState.getInt("current-page");
110-
// Adapter doesn't seem to be loading immediately.
111-
// Dear God, please forgive us for our sins
112-
view.postDelayed(() -> {
113-
pager.setAdapter(adapter);
114-
pager.setCurrentItem(pageNumber, false);
115-
116-
if (getActivity() == null) {
117-
Timber.d("Returning as activity is destroyed!");
118-
return;
119-
}
111+
pager.setCurrentItem(pageNumber, false);
112+
getActivity().invalidateOptionsMenu();
113+
adapter.notifyDataSetChanged();
120114

121-
getActivity().supportInvalidateOptionsMenu();
122-
adapter.notifyDataSetChanged();
123-
}, 100);
124-
} else {
125-
pager.setAdapter(adapter);
126115
}
127116
if (getActivity() instanceof MainActivity) {
128117
((MainActivity)getActivity()).hideTabs();
@@ -332,13 +321,31 @@ private void updateBookmarkState(MenuItem item) {
332321

333322
public void showImage(int i, boolean isWikipediaButtonDisplayed) {
334323
this.isWikipediaButtonDisplayed = isWikipediaButtonDisplayed;
335-
Handler handler = new Handler();
336-
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
324+
setViewPagerCurrentItem(i);
337325
}
338326

339327
public void showImage(int i) {
340-
Handler handler = new Handler();
341-
handler.postDelayed(() -> pager.setCurrentItem(i), 5);
328+
setViewPagerCurrentItem(i);
329+
}
330+
331+
/**
332+
* This function waits for the item to load then sets the item to current item
333+
* @param position current item that to be shown
334+
*/
335+
private void setViewPagerCurrentItem(int position) {
336+
final Boolean[] currentItemNotShown = {true};
337+
Runnable runnable = new Runnable() {
338+
@Override
339+
public void run() {
340+
while(currentItemNotShown[0]){
341+
if(adapter.getCount() > position){
342+
pager.setCurrentItem(position, false);
343+
currentItemNotShown[0] = false;
344+
}
345+
}
346+
}
347+
};
348+
new Thread(runnable).start();
342349
}
343350

344351
/**

0 commit comments

Comments
 (0)