Skip to content

Commit 29069da

Browse files
Merge pull request #16940 from nextcloud/fix/gallery-scroll
manual backport fix gallery scroll
2 parents 61bea90 + 5dcca81 commit 29069da

2 files changed

Lines changed: 27 additions & 21 deletions

File tree

app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
import com.owncloud.android.ui.events.ChangeMenuEvent;
9494
import com.owncloud.android.ui.events.SearchEvent;
9595
import com.owncloud.android.ui.fragment.FileDetailsSharingProcessFragment;
96+
import com.owncloud.android.ui.fragment.GalleryFragment;
9697
import com.owncloud.android.ui.fragment.OCFileListFragment;
9798
import com.owncloud.android.ui.navigation.NavigatorActivity;
9899
import com.owncloud.android.ui.navigation.NavigatorScreen;
@@ -330,6 +331,7 @@ private void openFavoritesTab() {
330331
}
331332

332333
private void openMediaTab(int menuItemId) {
334+
GalleryFragment.setLastMediaItemPosition(null);
333335
resetOnlyPersonalAndOnDevice();
334336
setupToolbar();
335337
startPhotoSearch(menuItemId);

app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,6 @@ public void onDestroyView() {
125125

126126
LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(refreshSearchEventReceiver);
127127

128-
setLastMediaItemPosition(null);
129-
130128
mAdapter.cleanup();
131129

132130
super.onDestroyView();
@@ -176,31 +174,37 @@ public void onActivityCreated(Bundle savedInstanceState) {
176174
}
177175

178176
@Override
179-
protected void setAdapter(Bundle args) {
180-
mAdapter = new GalleryAdapter(requireContext(),
181-
accountManager.getUser(),
182-
this,
183-
preferences,
184-
mContainerActivity,
185-
viewThemeUtils,
186-
columnSize,
187-
ThumbnailsCacheManager.getThumbnailDimension());
177+
public void setAdapter(Bundle args) {
178+
final var recyclerView = getRecyclerView();
179+
mAdapter = new GalleryAdapter(
180+
requireContext(),
181+
accountManager.getUser(),
182+
this,
183+
preferences,
184+
mContainerActivity,
185+
viewThemeUtils,
186+
columnSize,
187+
ThumbnailsCacheManager.getThumbnailDimension()
188+
);
188189
mAdapter.setHasStableIds(true);
189190
setRecyclerViewAdapter(mAdapter);
190-
191-
//update the footer as there is no footer shown in media view
192-
if (getRecyclerView() instanceof EmptyRecyclerView) {
193-
((EmptyRecyclerView) getRecyclerView()).setHasFooter(false);
191+
// update the footer as there is no footer shown in media view
192+
if (recyclerView instanceof EmptyRecyclerView emptyRecyclerView) {
193+
emptyRecyclerView.setHasFooter(false);
194194
}
195195

196-
if (getRecyclerView() != null) {
196+
if (recyclerView != null) {
197197
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 1);
198198
mAdapter.setLayoutManager(layoutManager);
199-
getRecyclerView().setLayoutManager(layoutManager);
200-
201-
if (lastMediaItemPosition != null) {
202-
layoutManager.scrollToPosition(lastMediaItemPosition);
203-
}
199+
recyclerView.setLayoutManager(layoutManager);
200+
recyclerView.post(() -> {
201+
if (lastMediaItemPosition != null) {
202+
RecyclerView.LayoutManager lm = recyclerView.getLayoutManager();
203+
if (lm != null) {
204+
lm.scrollToPosition(lastMediaItemPosition);
205+
}
206+
}
207+
});
204208
}
205209
}
206210

0 commit comments

Comments
 (0)