【发布时间】:2021-04-30 18:46:00
【问题描述】:
所以我一直在尝试对我的 Recyclerview 进行分页,所以每当 recyclerView 到达屏幕底部时,我都会调用 addNewPosts 方法
这里的 lastItemId 是从 firebase 检索到的视图的最后一个 ID。
我检查了它,它不为空,并且给出了屏幕底部的正确节点。
方法
private void addNewPost(String lastItemId) {
Query ref = FirebaseDatabase.getInstance()
.getReference("Admin").child(mAuth.getUid()).child("INSTITUTE")
.child("PROGRAMMES").orderByChild("programmeName");
ref.startAt(lastItemId).limitToFirst(6).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
StyleableToast.makeText(Programme_students.this, "ca", R.style.exampleToast).show();
// retreiving the data of hte students
String _icon = snapshot.child("PROGRAMMEINFORMATION").child("programmeIcon").getValue().toString();
String _programmeName = snapshot.child("PROGRAMMEINFORMATION").child("programmeName").getValue().toString().toUpperCase();
String _programmeCode = snapshot.child("PROGRAMMEINFORMATION").child("programmeCode").getValue().toString();
// creating a object of students
ProgrammeHelper programmeHelperzzz = new
ProgrammeHelper(_icon, _programmeName, _programmeCode);
//adding the stuents to the global variable
programmesfromdatabase.add(programmeHelperzzz);
progressBar.setVisibility(View.GONE);
programme_adapter.notifyDataSetChanged();
settinglistviewwwwwww();
}
@Override
public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot snapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
所以有一个名为 Stylabletoast 的自定义 toast 只是为了确认我将它保留在那里,因此没有显示 toast 当我保留 StartAt() 函数时没有调用方法
一旦我删除 StartAt(),代码就可以工作,它会为我提供所有新帖子,但它会重复,因为它是从头开始的
【问题讨论】:
标签: android firebase firebase-realtime-database android-recyclerview