#java #android #firebase #google-cloud-firestore
#java #Android #firebase #google-cloud-firestore
Вопрос:
У меня есть 3 фрагмента Edit_profile, Group_formation, Available_students Редактировать профиль имеет коллекцию пользователей (состоит из номера рулона), эта коллекция отображается во фрагменте available_students.Я хотел, чтобы, если при формировании группы (вставке рулона) некоторые пользовательские данные были вставлены, и после их отправки эти данные не должны отображаться во фрагменте available_students, однако их также не следует удалять из коллекции пользователей.Возможно ли это??
Доступный Фрагмент_students
mfirestore.collection("users").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.d(TAG, "Error" e.getMessage());
}
for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
Users users = doc.getDocument().toObject(Users.class);
usersList.add(users);
userListAdapter.notifyDataSetChanged();
}
}
}
});
return v;
Фрагмент GroupFormation
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String roll1=ET1.getText().toString();
String roll2=ET2.getText().toString();
String roll3=ET3.getText().toString();
String roll4=ET4.getText().toString();
String roll5=ET5.getText().toString();
Map<String,String> usermap= new HashMap<>();
usermap.put("Student1",roll1);
usermap.put("Student2",roll2);
usermap.put("Student3",roll3);
usermap.put("Student4",roll4);
usermap.put("Student5",roll5);
mfirestore.collection("Groups").add(usermap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Toast.makeText(getActivity(), "registered", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
String error=e.getMessage();
Toast.makeText(getActivity(), "error" error, Toast.LENGTH_SHORT).show();
}
});
}
});
}
Ответ №1:
Прочитайте список из firestore, используя приведенный пример кода:
db.collection("cities")
.whereEqualTo("state", "CA")
.addSnapshotListener(EventListener<QuerySnapshot> { snapshots, e ->
if (e != null) {
Log.w(TAG, "listen:error", e)
return@EventListener
}
for (dc in snapshots!!.documentChanges) {
when (dc.type) {
DocumentChange.Type.ADDED -> Log.d(TAG, "New city: ${dc.document.data}")
DocumentChange.Type.MODIFIED -> Log.d(TAG, "Modified city: ${dc.document.data}")
DocumentChange.Type.REMOVED -> Log.d(TAG, "Removed city: ${dc.document.data}")
}
}
})
Часто бывает полезно видеть фактические изменения в результатах запроса между снимками запроса, вместо того, чтобы просто использовать снимок всего запроса. Например, вы можете захотеть сохранить кэш по мере добавления, удаления и изменения отдельных документов.
Ссылка: Просмотр изменений между снимками в Firestore
Пожалуйста, проголосуйте, если вы считаете этот ответ полезным….