具有FirebaseRecyclerAdapter的RecyclerView addOnScrollListener [英] RecyclerView addOnScrollListener with FirebaseRecyclerAdapter
问题描述
我正在编写一个程序,使用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.
这篇关于具有FirebaseRecyclerAdapter的RecyclerView addOnScrollListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!