具有FirebaseRecyclerAdapter的RecyclerView addOnScrollListener [英] RecyclerView addOnScrollListener with FirebaseRecyclerAdapter

查看:80
本文介绍了具有FirebaseRecyclerAdapter的RecyclerView addOnScrollListener的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个程序,使用FirebaseRecyclerAdapter从Firebase数据库中获取数据

I'm writing a program, where I'm fetching data from Firebase Database using FirebaseRecyclerAdapter

我正在尝试实现一项功能,即在每个滚动条上添加20条记录并实现相同功能,

I'm trying to implement a functionality to add 20 records on every scroll and to achieve same, I'm using:

mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
queryUsersData = mDatabaseReference.orderByChild("timestamp").limitToFirst(20); 

现在,问题是我要获得前20条记录,但是在滚动中我没有得到下20条记录,因为每次滚动时,我都想获得下20条记录

Now, the issue is I'm getting first 20 records, but on scroll I'm not getting next 20 records, as on every scroll, I want to get next 20 records

onStart()

FirebaseRecyclerAdapter<Users, UsersViewHolder> adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
                Users.class,
                R.layout.user_layout,
                UsersViewHolder.class,
                queryUsersData
        ) {

            @Override
            protected void populateViewHolder(UsersViewHolder usersViewHolder, Users users, int position) {
                 final String userID = getRef(position).getKey();
                 ....
            }
      };
      usersList.setAdapter(adapter);
}

RecyclerView addOnScrollListener

RecyclerView addOnScrollListener

Boolean isScrolling = false;
int currentItems, totalItems, scrollOutItems;

..........

usersList.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();
                scrollOutItems = linearLayoutManager.findFirstVisibleItemPosition();

                if(isScrolling && (currentItems + scrollOutItems == totalItems)) {
                    isScrolling = false;
                }

            }
        });

现在下一步该怎么做?实现我的目标!

Now what to do next ? to achieve my goal!

推荐答案

分页将实现您想要干净可靠的愿望,我最近在Kotlin中使用了它,但是这里有一个Java实现.

Pagination will achieve want you want cleanly and reliably, I've recently used it with Kotlin, but there is a java implementation here.

使用Java进行分页+ Firebase实时数据库

这篇关于具有FirebaseRecyclerAdapter的RecyclerView addOnScrollListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆