Fixed listener not re-registering after e.g. a new search is started

This commit is contained in:
litetex 2022-01-16 19:42:30 +01:00
parent ff7cfe4715
commit 85f701b94e
1 changed files with 29 additions and 16 deletions

View File

@ -304,28 +304,36 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
}
});
infoListAdapter.setOnCommentsSelectedListener(new OnClickGesture<CommentsInfoItem>() {
infoListAdapter.setOnCommentsSelectedListener(new OnClickGesture<>() {
@Override
public void selected(final CommentsInfoItem selectedItem) {
onItemSelected(selectedItem);
}
});
}
/**
* Remove all listeners and add the initial scroll listener to the {@link #itemsList}.
* <br/>
* Which tries to load more items when not enough are in the view (not scrollable)
* and more are available.
* <br/>
* Note: This method only works because "This callback will also be called if visible
* item range changes after a layout calculation. In that case, dx and dy will be 0."
* - which might be unexpected because no actual scrolling occurs...
* <br/>
* This listener will be replaced by DefaultItemListOnScrolledDownListener when
* <ul>
* <li>the view was actually scrolled</li>
* <li>the view is scrollable</li>
* <li>no more items can be loaded</li>
* </ul>
*/
protected void setItemsListInitialScrollListener() {
if (DEBUG) {
Log.d(TAG, "setItemsListInitialScrollListener called");
}
itemsList.clearOnScrollListeners();
/*
* Add initial scroll listener - which tries to load more items when not enough
* are in the view (not scrollable) and more are available.
*
* Note: This method only works because "This callback will also be called if visible
* item range changes after a layout calculation. In that case, dx and dy will be 0."
* - which might be unexpected because no actual scrolling occurs...
*
* This listener will be replaced by DefaultItemListOnScrolledDownListener when
* * the view was actually scrolled
* * the view is scrollable
* * No more items can be loaded
*/
itemsList.addOnScrollListener(new DefaultItemListOnScrolledDownListener() {
@Override
public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) {
@ -360,7 +368,6 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
}
private void useNormalScrollListener() {
log("Unregistering and using normal listener");
itemsList.removeOnScrollListener(this);
itemsList.addOnScrollListener(new DefaultItemListOnScrolledDownListener());
}
@ -467,6 +474,12 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I>
// Load and handle
//////////////////////////////////////////////////////////////////////////*/
@Override
protected void startLoading(final boolean forceLoad) {
setItemsListInitialScrollListener();
super.startLoading(forceLoad);
}
protected abstract void loadMoreItems();
protected abstract boolean hasMoreItems();