I am using recyclerView
to load data from Firestore. I want my recyclerView
to get updated whenever a document gets added or deleted in the Firestore database without reloading the activity/fragment. Is there any way I can achieve this?
objects:
private var layoutManager: RecyclerView.LayoutManager? = null
private var adapter: RecyclerView.Adapter<RecyclerAdapter.ViewHolder>? = null
private lateinit var db: FirebaseFirestore
private lateinit var userArrayList: ArrayList<User>
its in fragment so
override fun onViewCreated(itemView: View, savedInstanceState: Bundle?) {
super.onViewCreated(itemView, savedInstanceState)
userArrayList = arrayListOf()
eventChangeListener()
}
pulling data:
private fun eventChangeListener() {
db = FirebaseFirestore.getInstance()
db.collection("Users").addSnapshotListener(object : EventListener<QuerySnapshot>{
override fun onEvent(value: QuerySnapshot?, error: FirebaseFirestoreException?) {
if (error != null){
Log.e("firestore error", error.message.toString())
return
}
for (dc : DocumentChange in value?.documentChanges!!){
if (dc.type == DocumentChange.Type.ADDED){
userArrayList.add(dc.document.toObject(User::class.java))
}
}
callBack()
}
})
}
populating
private fun callBack() {
holder.apply { //recycler view id
layoutManager = GridLayoutManager(activity,2)
adapter = RecyclerAdapter(userArrayList)
this.adapter = adapter
}
}