Optimize load more

pull/21/head
FongMi 4 years ago
parent 7d1bd4dc86
commit ccaa35ed34
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  2. 21
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomScroller.java

@ -1,6 +1,7 @@
package com.fongmi.android.tv.ui.fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -92,7 +93,6 @@ public class VodFragment extends Fragment implements CustomScroller.Callback, Vo
private void setViewModel() {
mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mSiteViewModel.result.observe(getViewLifecycleOwner(), result -> {
mAdapter.remove("progress");
mScroller.endLoading(result == null || result.getList().isEmpty());
if (result != null) addVideo(result);
});
@ -125,7 +125,6 @@ public class VodFragment extends Fragment implements CustomScroller.Callback, Vo
boolean clear = page.equals("1") && mAdapter.size() > mFilters.size();
if (clear) mAdapter.removeItems(mFilters.size(), mAdapter.size() - mFilters.size());
mSiteViewModel.categoryContent(getTypeId(), page, true, mExtend);
mAdapter.add("progress");
}
private void addVideo(Result result) {
@ -146,6 +145,7 @@ public class VodFragment extends Fragment implements CustomScroller.Callback, Vo
@Override
public void onLoadMore(String page) {
mScroller.setLoading(true);
getVideo(page);
}

@ -1,8 +1,5 @@
package com.fongmi.android.tv.ui.custom;
import android.os.Handler;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@ -18,17 +15,9 @@ public class CustomScroller extends RecyclerView.OnScrollListener {
}
@Override
public void onScrollStateChanged(@NonNull RecyclerView view, int newState) {
if (isLoading() || !isBottom(view) || newState != RecyclerView.SCROLL_STATE_IDLE) return;
setLoading(true); callback.onLoadMore(String.valueOf(++page));
}
private boolean isBottom(RecyclerView view) {
View lastChildView = view.getLayoutManager().getChildAt(view.getLayoutManager().getChildCount() - 1);
int lastChildBottom = lastChildView.getBottom();
int recyclerBottom = view.getBottom() - view.getPaddingBottom();
int lastPosition = view.getLayoutManager().getPosition(lastChildView);
return lastChildBottom == recyclerBottom && lastPosition == view.getLayoutManager().getItemCount() - 1;
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (isLoading() || recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_IDLE) return;
if (!recyclerView.canScrollVertically(1) && dy > 0) callback.onLoadMore(String.valueOf(++page));
}
public void reset() {
@ -39,13 +28,13 @@ public class CustomScroller extends RecyclerView.OnScrollListener {
return loading;
}
private void setLoading(boolean loading) {
public void setLoading(boolean loading) {
this.loading = loading;
}
public void endLoading(boolean empty) {
new Handler().postDelayed(() -> setLoading(false), 1000);
if (empty) page--;
setLoading(false);
}
public interface Callback {

Loading…
Cancel
Save