I have the following code:
someDocumentRef.collection("data").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
RelativeLayout emptyLayout = fragmentView.findViewById(R.id.empty_layout);
if (task.getResult() == null || task.getResult().isEmpty()) {
emptyLayout.setVisibility(View.VISIBLE);
rv.setVisibility(View.GONE);
} else {
Map<Character,List<QueryDocumentSnapshot>> dataDoc = new HashMap<>();
for (QueryDocumentSnapshot document : task.getResult()) {
char letter = getFirstLetter(document.getString("full_name"));
List<QueryDocumentSnapshot> l = dataDoc.get(letter);
if (l == null) {
l = new ArrayList<>();
l.add(document);
dataDoc.put(letter, l);
} else {
l.add(document);
}
}
// Create recycler view
emptyLayout.setVisibility(View.GONE);
rv.setVisibility(View.VISIBLE);
adapter = new DataAdapter(getActivity(), dataDoc);
rv.setLayoutManager(new LinearLayoutManager(getActivity()));
rv.setAdapter(adapter);
}
}
}
});
In my onCreateView method (Fragment). Basically, it gets all documents from the collection data of the Firebase database and passes it to the adapter in order to create a recycler view. Works great but my question is how to listen to changes in the database and once some new document inserted or removed, update the recycler view? Note that I don't use the FirestoreRecyclerAdapter adapter, rather my custom adapter. Also, I'm using Firebase Cloud database.