boolean isLoading = false;
private void InitScrollListner() {
bi.dataview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
if (!isLoading) {
if (linearLayoutManager != null && linearLayoutManager.findLastCompletelyVisibleItemPosition() == person_list.size() - 1) {
person_list.add(null);
adapter.notifyItemInserted(person_list.size() - 1);
bi.dataview.smoothScrollToPosition(person_list.size());
isLoading = true;
loadMore();
}
}
}
private void loadMore() {
int scrollPosition = person_list.size();
person_list.remove(scrollPosition-1);
adapter.notifyItemRemoved(scrollPosition);
int no_of_entries_to_get = 10;
List<Person> temp = getValues(scrollPosition-1,no_of_entries_to_get);
if(!temp.isEmpty()){
person_list.addAll(temp);
adapter.notifyDataSetChanged();
}else{
Toast.makeText(MainActivity.this, "List end reached", Toast.LENGTH_SHORT).show();
ProgressBar pb = findViewById(R.id.progressBar);
pb.setVisibility(View.GONE);
bi.dataview.clearOnScrollListeners();
}
isLoading = false;
}
});
}