Skip to content

Commit 2acaefd

Browse files
committed
Fixed scrolling not working when rotating device
1 parent 9c2cdd2 commit 2acaefd

1 file changed

Lines changed: 22 additions & 13 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,24 @@ public void selected(final CommentsInfoItem selectedItem) {
310310
onItemSelected(selectedItem);
311311
}
312312
});
313+
314+
// Ensure that there is always a scroll listener (e.g. when rotating the device)
315+
useNormalItemListScrollListener();
316+
}
317+
318+
/**
319+
* Removes all listeners and adds the normal scroll listener to the {@link #itemsList}.
320+
*/
321+
protected void useNormalItemListScrollListener() {
322+
if (DEBUG) {
323+
Log.d(TAG, "useNormalItemListScrollListener called");
324+
}
325+
itemsList.clearOnScrollListeners();
326+
itemsList.addOnScrollListener(new DefaultItemListOnScrolledDownListener());
313327
}
314328

315329
/**
316-
* Remove all listeners and add the initial scroll listener to the {@link #itemsList}.
330+
* Removes all listeners and adds the initial scroll listener to the {@link #itemsList}.
317331
* <br/>
318332
* Which tries to load more items when not enough are in the view (not scrollable)
319333
* and more are available.
@@ -329,9 +343,9 @@ public void selected(final CommentsInfoItem selectedItem) {
329343
* <li>no more items can be loaded</li>
330344
* </ul>
331345
*/
332-
protected void setItemsListInitialScrollListener() {
346+
protected void useInitialItemListLoadScrollListener() {
333347
if (DEBUG) {
334-
Log.d(TAG, "setItemsListInitialScrollListener called");
348+
Log.d(TAG, "useInitialItemListLoadScrollListener called");
335349
}
336350
itemsList.clearOnScrollListeners();
337351
itemsList.addOnScrollListener(new DefaultItemListOnScrolledDownListener() {
@@ -342,7 +356,7 @@ public void onScrolled(final RecyclerView recyclerView, final int dx, final int
342356
if (dy != 0) {
343357
log("Vertical scroll occurred");
344358

345-
useNormalScrollListener();
359+
useNormalItemListScrollListener();
346360
return;
347361
}
348362
if (isLoading.get()) {
@@ -352,29 +366,24 @@ public void onScrolled(final RecyclerView recyclerView, final int dx, final int
352366
if (!hasMoreItems()) {
353367
log("No more items to load");
354368

355-
useNormalScrollListener();
369+
useNormalItemListScrollListener();
356370
return;
357371
}
358372
if (itemsList.canScrollVertically(1)
359373
|| itemsList.canScrollVertically(-1)) {
360374
log("View is scrollable");
361375

362-
useNormalScrollListener();
376+
useNormalItemListScrollListener();
363377
return;
364378
}
365379

366380
log("Loading more data");
367381
loadMoreItems();
368382
}
369383

370-
private void useNormalScrollListener() {
371-
itemsList.removeOnScrollListener(this);
372-
itemsList.addOnScrollListener(new DefaultItemListOnScrolledDownListener());
373-
}
374-
375384
private void log(final String msg) {
376385
if (DEBUG) {
377-
Log.d(TAG, "itemListInitScrollListener - " + msg);
386+
Log.d(TAG, "initItemListLoadScrollListener - " + msg);
378387
}
379388
}
380389
});
@@ -476,7 +485,7 @@ public void onCreateOptionsMenu(@NonNull final Menu menu,
476485

477486
@Override
478487
protected void startLoading(final boolean forceLoad) {
479-
setItemsListInitialScrollListener();
488+
useInitialItemListLoadScrollListener();
480489
super.startLoading(forceLoad);
481490
}
482491

0 commit comments

Comments
 (0)