11package com .ztiany .loadmore .adapter ;
22
3+ import android .util .Log ;
34import android .view .View ;
45import android .view .ViewGroup ;
56
1516
1617public class WrapperAdapter extends RecyclerViewAdapterWrapper implements ILoadMore {
1718
19+ private static final String TAG = "WrapperAdapter" ;
20+
1821 private static final int LOAD_MORE_FOOTER = Integer .MAX_VALUE ;
1922
2023 private LoadMoreImpl mLoadMoreManager ;
@@ -28,25 +31,33 @@ public class WrapperAdapter extends RecyclerViewAdapterWrapper implements ILoadM
2831 private KeepFullSpanUtils mKeepFullSpanUtils ;
2932
3033 public static WrapperAdapter wrap (RecyclerView .Adapter adapter ) {
31- return new WrapperAdapter (adapter );
34+ return new WrapperAdapter (adapter , false );
35+ }
36+
37+ public static WrapperAdapter wrap (RecyclerView .Adapter adapter , boolean useScrollListener ) {
38+ return new WrapperAdapter (adapter , useScrollListener );
3239 }
3340
34- private WrapperAdapter (RecyclerView .Adapter wrapped ) {
41+ private WrapperAdapter (RecyclerView .Adapter wrapped , boolean useScrollListener ) {
3542 super (wrapped );
36- mLoadMoreManager = new LoadMoreImpl ();
37- mScrollListener = new OnRecyclerViewScrollBottomListener () {
38- @ Override
39- public void onBottom (@ Direction int direction ) {
40- mLoadMoreManager .tryCallLoadMore (direction );
41- }
42- };
43+ mLoadMoreManager = new LoadMoreImpl (useScrollListener );
4344 mKeepFullSpanUtils = new KeepFullSpanUtils ();
45+
46+ if (useScrollListener ) {
47+ mScrollListener = new OnRecyclerViewScrollBottomListener () {
48+ @ Override
49+ public void onBottom (@ Direction int direction ) {
50+ Log .d (TAG , "onBottom call LoadMore." );
51+ mLoadMoreManager .tryCallLoadMore (direction );
52+ }
53+ };
54+ }
4455 }
4556
4657 private void initOnAttachedToRecyclerView () {
47-
48- mRecyclerView .removeOnScrollListener (mScrollListener );
49- mRecyclerView . addOnScrollListener ( mScrollListener );
58+ if ( mScrollListener != null ) {
59+ mRecyclerView .addOnScrollListener (mScrollListener );
60+ }
5061
5162 RecyclerView .LayoutManager layoutManager = mRecyclerView .getLayoutManager ();
5263
@@ -58,12 +69,18 @@ private void initOnAttachedToRecyclerView() {
5869 }
5970
6071 public void setLoadingTriggerThreshold (int loadingTriggerThreshold ) {
61- mScrollListener .setLoadingTriggerThreshold (loadingTriggerThreshold );
72+ if (mScrollListener != null ) {
73+ mScrollListener .setLoadingTriggerThreshold (loadingTriggerThreshold );
74+ } else {
75+ Log .d (TAG , "you are not using ScrollListener, this call has no effect." );
76+ }
6277 }
6378
6479 public void setAdapterInterface (AdapterInterface lastVisibleItemPosition ) {
6580 mAdapterInterface = lastVisibleItemPosition ;
66- mScrollListener .setLastVisibleItemPositionGetter (lastVisibleItemPosition );
81+ if (mScrollListener != null ) {
82+ mScrollListener .setLastVisibleItemPositionGetter (lastVisibleItemPosition );
83+ }
6784 }
6885
6986 @ NonNull
@@ -112,7 +129,7 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull
112129 @ Override
113130 public int getItemCount () {
114131 int count = super .getItemCount ();
115- return count == 0 ? count : count + 1 ;
132+ return count == 0 ? 0 : count + 1 ;
116133 }
117134
118135 @ Override
@@ -152,6 +169,10 @@ public boolean onFailedToRecycleView(@NonNull ViewHolder holder) {
152169 @ Override
153170 public void onViewAttachedToWindow (@ NonNull ViewHolder holder ) {
154171 if (isLoadMoreOrStateViewHolder (holder )) {
172+ if (mScrollListener == null ) {
173+ Log .d (TAG , "onLoadMoreViewAttachedToWindow call LoadMore." );
174+ mLoadMoreManager .tryCallLoadMore (Direction .UP );
175+ }
155176 return ;
156177 }
157178 super .onViewAttachedToWindow (holder );
0 commit comments