While implementing pagination. I faced this issue. Without scrolling the onscrolled method continuously calling. Please check my code below.
For reference, I'm using Endless Scrolling with AdapterViews and RecyclerView
There is also one demo example this.
I'm requesting data from API. So I implemented volley. After setup, strange thing happened. OnScrolled method continuously calling without scrolling. Below is my code.
HomeFragment.java
view = inflater.inflate(R.layout.fragment_home, container, false);
tvNoDataFound = (TextView) view.findViewById(R.id.tv_no_data_found);
recyclerView = (RecyclerView)view.findViewById(R.id.listView);
linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setLayoutManager(linearLayoutManager);
context = view.getContext();
// Lookup the swipe container view
swipeProjects = (SwipeRefreshLayout)view.findViewById(R.id.swipeProjects);
// Setup refresh listener which triggers new data loading
swipeProjects.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// Your code to refresh the list here.
// Make sure you call swipeContainer.setRefreshing(false)
// once the network request has completed successfully.
getProjects(0,0);
}
});
// Configure the refreshing colors
swipeProjects.setColorSchemeResources(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light);
List<LatestProject> getLatest = getProjects(0,0);
recyclerView.addOnScrollListener(new EndlessRecyclerViewScrollListener(linearLayoutManager) {
@Override
public void onLoadMore(int page, int totalItemsCount) {
Log.e("here scrolling","scrolling---"+page+"---"+totalItemsCount);
// Triggered only when new data needs to be appended to the list
// Add whatever code is needed to append new items to the bottom of the list
List<LatestProject> getLatest = getProjects(totalItemsCount,page);
}
});
return view;
after get the response from server, I used below function to set adapter.
public List<LatestProject> returnProjects(List<LatestProject> list, int offset, int curSizes){
if(offset!=0){
int curSize = adapter.getItemCount();
latestProjectsList.addAll(list);
adapter.notifyItemRangeInserted(curSize, list.size() - 1);
}else{
latestProjectsList = list;
adapter = new ProjectListAdapter(list,getActivity(),HomeFragment.this);
recyclerView.setAdapter(adapter);
}
return list;
}
In above code my first API call has offset 0. I don't know what is the issue. Is it because of volley asynchronous request?