Здравствуйте, я использую Firebase для хранения и получения данных. В настоящее время я получаю данные из Firebase и отображаю их в RecyclerView. Я просто хочу делать бесконечную прокрутку в recyclerview. Но я не знаю, как это сделать с Firebase. Во всяком случае, я пробовал код, но не работал с onScroll (). Отображаются первые 10 данных, но onScroll () не работает.
Пожалуйста, посмотрите этот код и помогите выяснить, почему метод onScroll () не работает?
funnyJokesQuery = FirebaseDatabase.getInstance().getReference(content).orderByChild("subcategory")
.limitToFirst(10);
funnyJokesQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String contentdisplay = dataSnapshot.child("content").getValue(String.class);
NewContentModel contentModel = new NewContentModel(contentdisplay);
contentname.add(0, contentModel);
arrayAdapter.notifyDataSetChanged();
arrayAdapter.notifyItemChanged(0);
progressBar.setVisibility(View.GONE);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
progressBar.setVisibility(View.GONE);
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL)
{
isScrolling = true;
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentitems = manager.getChildCount();
totalitems = manager.getItemCount();
scrollOutItems = manager.findFirstVisibleItemPosition();
lastItemPosition = manager.findLastVisibleItemPosition();
if (isScrolling && (currentitems + scrollOutItems == totalitems)) {
Query funnyJokesQuery = FirebaseDatabase.getInstance().getReference(content)
.orderByChild("subcategory")
.startAt(lastItemPosition)
.limitToFirst(10);
progressBar.setVisibility(View.VISIBLE);
funnyJokesQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String contentdisplay = dataSnapshot.child("content").getValue(String.class);
NewContentModel newContentModel = new NewContentModel(contentdisplay);
contentname.add(lastItemPosition + 1, newContentModel);
arrayAdapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
});
Пожалуйста, скажите мне почему этот код дает желаемый результат.