[英]Why does recyclerview refreshed when new data is added in firestore?
I don't want to refresh recyclerview items when a new data is added in firestore database.在 firestore 数据库中添加新数据时,我不想刷新 recyclerview 项目。 Firestore returns all documents from Student collection every time a new student is added in Firestore database.每次在 Firestore 数据库中添加新学生时,Firestore 都会返回 Student 集合中的所有文档。 How should I prevent firestore from returning all documents when a new student is added?添加新学生时,我应该如何防止 firestore 返回所有文档?
Here is my code:这是我的代码:
private void load() {
Query query = createQuery();
FirestoreRecyclerOptions<Student> options = new FirestoreRecyclerOptions.Builder<Student>()
.setQuery(query, Student.class)
.build();
myStudentAdapter = new MyStudentAdapter(options);
rv.setAdapter(myStudentAdapter);
myStudentAdapter.startListening();
}
private Query createQuery() {
if (!search.isEmpty()) {
if (!course.isEmpty() && !year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.whereEqualTo("year", year)
.whereEqualTo("block", block)
.startAt(search)
.endAt(search + '\uf8ff');
} else if (!course.isEmpty() && !year.isEmpty() && block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.whereEqualTo("year", year)
.startAt(search)
.endAt(search + '\uf8ff');
} else if (!course.isEmpty() && year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.whereEqualTo("block", block)
.startAt(search)
.endAt(search + '\uf8ff');
} else if (course.isEmpty() && !year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("year", year)
.whereEqualTo("block", block)
.startAt(search)
.endAt(search + '\uf8ff');
} else if (!course.isEmpty() && year.isEmpty() && block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.startAt(search)
.endAt(search + '\uf8ff');
} else if (course.isEmpty() && !year.isEmpty() && block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("year", year)
.startAt(search)
.endAt(search + '\uf8ff');
} else if (course.isEmpty() && year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("block", block)
.startAt(search)
.endAt(search + '\uf8ff');
} else {
return db.collection("Student")
.orderBy("fullName")
.startAt(search)
.endAt(search + '\uf8ff');
}
} else {
if (!course.isEmpty() && !year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.whereEqualTo("year", year)
.whereEqualTo("block", block);
} else if (!course.isEmpty() && !year.isEmpty() && block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.whereEqualTo("year", year);
} else if (!course.isEmpty() && year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course)
.whereEqualTo("block", block);
} else if (course.isEmpty() && !year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("year", year)
.whereEqualTo("block", block);
} else if (!course.isEmpty() && year.isEmpty() && block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("course", course);
} else if (course.isEmpty() && !year.isEmpty() && block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("year", year);
} else if (course.isEmpty() && year.isEmpty() && !block.isEmpty()) {
return db.collection("Student")
.orderBy("fullName")
.whereEqualTo("block", block);
} else {
return db.collection("Student")
.orderBy("fullName");
}
}
}
@Override
public void onStart() {
super.onStart();
myStudentAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
myStudentAdapter.stopListening();
}
The adapters in the FirebaseUI library: they monitor the data on the server, and update to reflect changes in that data. FirebaseUI 库中的适配器:它们监视服务器上的数据,并更新以反映该数据的变化。 There is no way to change the behaviors of these adapters to only load the data, and skip the monitoring.无法将这些适配器的行为更改为仅加载数据,而跳过监视。
If you don't want to reflect changes, you'll have to implement your own adapter.如果您不想反映更改,则必须实现自己的适配器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.