Я хочу реализовать бесконечную прокрутку с помощью FirebaseRecyclerAdapter
, и я использую firebase realtimedatabase
(не firestore).
Я проверил много вопросов о переполнении стека по этой теме, но дело либо вони реализованы для firestore
или с использованием Array list
.
Это ссылки: Link1 Link2 Link3 и некоторые другие.
Вот мой код.
FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<User>()
.setQuery(mQuery, User.class)
.build();
final FirebaseRecyclerAdapter<User, OnlineUserViewHolder> onlineUserAdapter =
new FirebaseRecyclerAdapter<User, OnlineUserViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final OnlineUserViewHolder holder, final int position, @NonNull User model) {
final String userID = getRef(position).getKey();
final String retrievedName;
mFirebaseUserDBRef.child(userID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
oldestUserId = dataSnapshot.getKey(); ////HERE WE ARE SAVING THE LAST User_ID So that we can implement scrolling
final String retrievedName = dataSnapshot.child("name").getValue().toString();
holder.name.setText(retrievedName);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
};
recyclerView.setAdapter(onlineUserAdapter);
onlineUserAdapter.startListening();
Вот код для прокрутки:
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 = linearLayoutManager.getChildCount();
totalItems = linearLayoutManager.getItemCount();
scrolledOutItems = linearLayoutManager.findFirstVisibleItemPosition();
if (isScrolling && (currentItems + scrolledOutItems == totalItems)){
isScrolling = false;
mQuery = mFirebaseUserDBRef.orderByChild("lastSignIn").startAt(oldestUserId).limitToLast(20);
mQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//Don't know how to add it to onlineUserAdapter
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
});
Как реализовать прокрутку для FirebaseRecycleAdapter?
Спасибо