I try commbine StaggeredGrid RecyclerView with Endless and SwipeRefreshLayout. but I have issue with my code :
grid.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = grid.getChildCount();
int totalItemCount = mLayoutManager.getItemCount();
int firstVisibleItem = mLayoutManager.findFirstVisibleItemPositions(null)[0];
if (firstVisibleItem == 0 && visibleItemCount > 0
&& grid.getChildAt(0).getTop() >= 0) {
mSwipeRefreshLayout.setEnabled(true);
} else {
mSwipeRefreshLayout.setEnabled(false);
}
mPreviousVisibleItem = firstVisibleItem;
if (firstVisibleItem + visibleItemCount == totalItemCount
&& totalItemCount != 0
&& isFinishLoadingAwal
&& !isFinishMoreNews
&& adapter.getItemCount() > 0) {
getMoreNewsFromServer();
}
}
});
the code above, i get issue :
At endlessly position,
getMoreNewsFromServer();
always called (normal: one called).At endlessly position, mSwipeRefreshLayout is called
if i used Listview, it's work like this :
list.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem == 0 && visibleItemCount > 0
&& list.getChildAt(0).getTop() >= 0) {
mSwipeRefreshLayout.setEnabled(true);
} else {
mSwipeRefreshLayout.setEnabled(false);
}
mPreviousVisibleItem = firstVisibleItem;
if (firstVisibleItem + visibleItemCount == totalItemCount
&& totalItemCount != 0
&& isFinishLoadingAwal
&& !isFinishMoreNews
&& adapter.getCount() > 0) {
getMoreNewsFromServer();
}
}
});
so how to fix it ?