FirebaseUI: как реализовать бесконечную прокрутку в FirebaseRecyclerAdapter - PullRequest
0 голосов
/ 26 декабря 2018

Я хочу реализовать бесконечную прокрутку с помощью 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?

Спасибо

...