【发布时间】:2020-06-28 03:35:01
【问题描述】:
我正在编写一个程序,我正在使用 FirebaseRecyclerAdapter 从 Firebase 数据库中获取数据
我正在尝试实现一个功能,在每个滚动条上添加 20 条记录并实现相同,我正在使用:
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
queryUsersData = mDatabaseReference.orderByChild("timestamp").limitToFirst(20);
现在,问题是我获得了前 20 条记录,但在滚动时我没有获得接下来的 20 条记录,因为每次滚动时,我都想获得接下来的 20 条记录
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
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;
}
}
});
现在下一步该做什么?实现我的目标!
【问题讨论】:
标签: android firebase firebase-realtime-database android-recyclerview