Groupie: I want to Remove an item that is basically a chat from the adapter and update my recycler View or notify adapter about data change I don't know how to do it!

Created on 12 Jul 2020  路  2Comments  路  Source: lisawray/groupie

class ChatLogActivity : AppCompatActivity(){
.......
val ref= FirebaseDatabase.getInstance().getReference("/user-messages/$fromId/$toId")
        ref.addChildEventListener(object : ChildEventListener{
            override fun onChildAdded(p0: DataSnapshot, p1: String?) {
                val chatMessage = p0.getValue(ChatMessage::class.java)
                if (chatMessage != null) {
                    if(chatMessage.fromId == FirebaseAuth.getInstance().uid){
                        adaptor.add(
                            ChatToItems(
                                chatMessage
                            )
                        )
                    }
override fun onChildRemoved(p0: DataSnapshot) {

**//Want to update my adapter here when one child is deleted**
            }

}


class ChatToItems(val chatMessage: ChatMessage)  : Item<ViewHolder>(){
override fun bind(viewHolder: ViewHolder, position: Int) {
        viewHolder.itemView.textViewToRow.setOnClickListener {
....
                    deleteSendMessage(viewHolder,chatMessage.toId,chatMessage.fromId,chatMessage.id,position)
    }
**//Deleting from firebase**
private fun deleteSendMessage(
        viewHolder: ViewHolder,
        toId: String,
        fromId: String,
        id2: String,
        position: Int )
val reference = FirebaseDatabase.getInstance().reference
            .child("user-messages").child(fromId)
            .child(toId).child(id2).removeValue()
            .addOnCompleteListener {task ->
                if(task.isSuccessful){
                    Toast.makeText(viewHolder.itemView.context,"Deleted",Toast.LENGTH_LONG).show()
                }
                else{
                    Toast.makeText(viewHolder.itemView.context,"Failed to Delete",Toast.LENGTH_LONG).show()
                }
            }
question

All 2 comments

You can do adapter.remove(message)

First one when you know which exactly element will remove, my suggestion you have to keep a references of the items are you adding into an adapter.

adapter.removeGroupAtAdapterPosition(positionIndex)
Second one you have to know which position wants to remove, due to it's a chat app keep in mind indexes will mutate

Thanks for providing the answer here @cbedoy

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Nimrodda picture Nimrodda  路  3Comments

ovitrif picture ovitrif  路  5Comments

dbof10 picture dbof10  路  5Comments

MirzaAhmedBaig picture MirzaAhmedBaig  路  6Comments

rpedretti picture rpedretti  路  3Comments