dkzwm / SmoothRefreshLayout

一款支持上下拉刷新、越界回弹、二级刷新、横向刷新、拉伸回弹、平滑滚动、嵌套滚动的多功能刷新控件
MIT License
1.3k stars 218 forks source link

横向加载 loadmore 能否指定加载左侧还是右侧 #142

Closed 13120241790 closed 2 years ago

13120241790 commented 2 years ago

横向加载 loadmore 现在左右都会被触发。参考:TestHorizontalRefreshActivity

实际代码: mRefreshLayout.setDisableRefresh(true); mRefreshLayout.setDisableLoadMore(false); mRefreshLayout.setEnableAutoLoadMore(false); mRefreshLayout.setOnRefreshListener(new RefreshingListenerAdapter() { @Override public void onLoadingMore() { super.onLoadingMore(); Log.e("refresh","onLoadingMore"); new Handler().postDelayed(() -> { mRefreshLayout.refreshComplete();

    },500);
  }

  @Override
  public void onRefreshing() {
    super.onRefreshing();
    Log.e("refresh","onRefreshing");
    new Handler().postDelayed(() -> {
      mRefreshLayout.refreshComplete();

    },500);
  }
});
adapter = new SingerListAdapter();
GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 3,
    GridLayoutManager.HORIZONTAL, false);
binding.rv.setLayoutManager(layoutManager);
binding.rv.setAdapter(adapter);
13120241790 commented 2 years ago

大佬您好 ,还发现一个问题 mRefreshLayout.setEnableAutoLoadMore(false); 如果开启了禁用,手动自己去拉 onLoadingMore 也不会回调了。有机会能和您通过其他方式进行交流请教吗(QQ/WX/钉钉/飞书等 )? GitHub 还经常不能开打,感谢大佬

dkzwm commented 2 years ago

我这边没有复现你的问题,理论上使用如下配置

refreshLayout.setDisableRefresh(true);
refreshLayout.setDisableLoadMore(false);

即可,不需要额外调用setEnableAutoLoadMore,因为默认没有开启自动加载更多。

13120241790 commented 2 years ago

你好,大佬请教一下,我看您是用的 NestedScrollingChild3,NestedScrollingParent3 。如果我不需要考虑嵌套问题的话 在 RecyclerView.OnScrollListener 的 SCROLL_STATE_IDLE 时候去判断 findLastVisibleItemPosition() == layoutManager.getItemCount() - 1 触底了然后去触加载更多这种实现方式有什么风险和坑吗?

dkzwm commented 2 years ago

本库的嵌套RecyclerView自动加载更多就是类似的实现。你自己实现或者使用本库的实现都是可以的。

13120241790 commented 2 years ago

好的谢谢大佬,如果不能手动去滑动触底,通过代码去操作 smoothScrollToPosition 去滑动到最后一个能触发触底吗?感谢大佬指导!

13120241790 commented 2 years ago

我试了可以 感谢指导

dkzwm commented 2 years ago

本库有相关实现,你直接使用本库提供的也可以的。DEMO中的测试触发滚动到边缘并自动刷新界面就是类似实现