Disable srolling down comment list while comments are loading
Prevents comment list from losing focus to some outside View when user tries to scroll down after reaching "end"
This commit is contained in:
parent
e6f3cde4cb
commit
31bd60f3b1
1 changed files with 19 additions and 0 deletions
|
|
@ -10,6 +10,7 @@ import androidx.annotation.NonNull;
|
|||
import org.schabi.newpipe.extractor.ListExtractor;
|
||||
import org.schabi.newpipe.extractor.ListInfo;
|
||||
import org.schabi.newpipe.util.Constants;
|
||||
import org.schabi.newpipe.views.NewPipeRecyclerView;
|
||||
|
||||
import java.util.Queue;
|
||||
|
||||
|
|
@ -17,6 +18,8 @@ import icepick.State;
|
|||
import io.reactivex.Single;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.functions.Action;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
public abstract class BaseListInfoFragment<I extends ListInfo>
|
||||
|
|
@ -136,9 +139,13 @@ public abstract class BaseListInfoFragment<I extends ListInfo>
|
|||
isLoading.set(true);
|
||||
|
||||
if (currentWorker != null) currentWorker.dispose();
|
||||
|
||||
forbidDownwardFocusScroll();
|
||||
|
||||
currentWorker = loadMoreItemsLogic()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doFinally(this::allowDownwardFocusScroll)
|
||||
.subscribe((@io.reactivex.annotations.NonNull ListExtractor.InfoItemsPage InfoItemsPage) -> {
|
||||
isLoading.set(false);
|
||||
handleNextItems(InfoItemsPage);
|
||||
|
|
@ -148,6 +155,18 @@ public abstract class BaseListInfoFragment<I extends ListInfo>
|
|||
});
|
||||
}
|
||||
|
||||
private void forbidDownwardFocusScroll() {
|
||||
if (itemsList instanceof NewPipeRecyclerView) {
|
||||
((NewPipeRecyclerView) itemsList).setFocusScrollAllowed(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void allowDownwardFocusScroll() {
|
||||
if (itemsList instanceof NewPipeRecyclerView) {
|
||||
((NewPipeRecyclerView) itemsList).setFocusScrollAllowed(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleNextItems(ListExtractor.InfoItemsPage result) {
|
||||
super.handleNextItems(result);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue