fix:社区搜索改为懒加载后,切换浅色模式crash
This commit is contained in:
@ -35,7 +35,7 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
Observer<List<T>>,
|
||||
SwipeRefreshLayout.OnRefreshListener,
|
||||
OnDataObservable<T> {
|
||||
|
||||
@Nullable
|
||||
protected RecyclerView mListRv;
|
||||
@Nullable
|
||||
protected SwipeRefreshLayout mListRefresh;
|
||||
@ -136,7 +136,7 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (isAutomaticLoad()) mListViewModel.load(LoadType.NORMAL);
|
||||
|
||||
RecyclerView.ItemDecoration itemDecoration = getItemDecoration();
|
||||
if (itemDecoration != null) mListRv.addItemDecoration(itemDecoration);
|
||||
if (itemDecoration != null && mListRv != null) mListRv.addItemDecoration(itemDecoration);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -158,40 +158,42 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
}
|
||||
mLayoutManager = new FixLinearLayoutManager(getContext());
|
||||
((DefaultItemAnimator) mListRv.getItemAnimator()).setSupportsChangeAnimations(false);
|
||||
mListRv.setLayoutManager(mLayoutManager);
|
||||
mListRv.setAdapter(provideListAdapter());
|
||||
mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
if (((LinearLayoutManager) layoutManager).findLastVisibleItemPosition() == provideListAdapter().getItemCount() - 1
|
||||
&& RecyclerView.SCROLL_STATE_IDLE == newState) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
}
|
||||
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
int visibleItemCount = layoutManager.getChildCount();
|
||||
int totalItemCount = layoutManager.getItemCount();
|
||||
if ((visibleItemCount > 0 && newState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - 1)) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
if (mListRv != null) {
|
||||
mListRv.setLayoutManager(mLayoutManager);
|
||||
mListRv.setAdapter(provideListAdapter());
|
||||
mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
if (((LinearLayoutManager) layoutManager).findLastVisibleItemPosition() == provideListAdapter().getItemCount() - 1
|
||||
&& RecyclerView.SCROLL_STATE_IDLE == newState) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
}
|
||||
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
int visibleItemCount = layoutManager.getChildCount();
|
||||
int totalItemCount = layoutManager.getItemCount();
|
||||
if ((visibleItemCount > 0 && newState == RecyclerView.SCROLL_STATE_IDLE && (lastVisibleItemPosition) >= totalItemCount - 1)) {
|
||||
mListViewModel.load(LoadType.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
if (lastPositions == null) {
|
||||
lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()];
|
||||
RecyclerView.LayoutManager layoutManager = mListRv.getLayoutManager();
|
||||
if (layoutManager instanceof StaggeredGridLayoutManager) {
|
||||
if (lastPositions == null) {
|
||||
lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()];
|
||||
}
|
||||
((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(lastPositions);
|
||||
lastVisibleItemPosition = NumberUtils.findMax(lastPositions);
|
||||
}
|
||||
((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(lastPositions);
|
||||
lastVisibleItemPosition = NumberUtils.findMax(lastPositions);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
if (mReuseNoConn != null) mReuseNoConn.setOnClickListener(view1 -> onLoadRefresh());
|
||||
}
|
||||
|
||||
@ -254,14 +256,16 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.GONE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
if (mDataExceptionView != null) mDataExceptionView.setVisibility(View.GONE);
|
||||
mListRv.setVisibility(View.VISIBLE);
|
||||
hideRefreshingLayout();
|
||||
|
||||
mListRv.postDelayed(() -> {
|
||||
if (provideListAdapter().mEntityList.size() < theNumberNeededToFillAScreen()) {
|
||||
autoLoadMore();
|
||||
}
|
||||
}, getAutoLoadMoreDelay());
|
||||
hideRefreshingLayout();
|
||||
if (mListRv != null) {
|
||||
mListRv.setVisibility(View.VISIBLE);
|
||||
mListRv.postDelayed(() -> {
|
||||
if (provideListAdapter().mEntityList.size() < theNumberNeededToFillAScreen()) {
|
||||
autoLoadMore();
|
||||
}
|
||||
}, getAutoLoadMoreDelay());
|
||||
}
|
||||
}
|
||||
|
||||
public void onLoadError() {
|
||||
@ -270,7 +274,9 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.GONE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
if (mDataExceptionView != null) mDataExceptionView.setVisibility(View.GONE);
|
||||
mListRv.setVisibility(View.GONE);
|
||||
if (mListRv != null) {
|
||||
mListRv.setVisibility(View.GONE);
|
||||
}
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
@ -280,7 +286,9 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.VISIBLE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
if (mDataExceptionView != null) mDataExceptionView.setVisibility(View.GONE);
|
||||
mListRv.setVisibility(View.GONE);
|
||||
if (mListRv != null) {
|
||||
mListRv.setVisibility(View.GONE);
|
||||
}
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
@ -291,8 +299,7 @@ public abstract class LazyListFragment<T, VM extends BaseListViewModel /* 该泛
|
||||
if (mReuseNoConn != null) mReuseNoConn.setVisibility(View.GONE);
|
||||
if (mReuseNoData != null) mReuseNoData.setVisibility(View.GONE);
|
||||
if (mListLoading != null) mListLoading.setVisibility(View.GONE);
|
||||
|
||||
mListRv.setVisibility(View.GONE);
|
||||
if (mListRv != null) mListRv.setVisibility(View.GONE);
|
||||
hideRefreshingLayout();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user