0

I need to remove child from Firebase after onClick from RecyclerView Adapter.

I have something like this:

Firebase database is enter image description here

recyclerview is enter image description here

My biggest problem is not sure how to get the "key" of the child node from the recyclerview.

I have been stuck on this supposedly simple thing for about 3 days so hopefully any help is appreciated.

package com.cpg12.findingfresh.adapters

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.cpg12.findingfresh.R
import com.cpg12.findingfresh.database.ShoppingList
import com.google.firebase.database.FirebaseDatabase

class ShoppingListAdapter : RecyclerView.Adapter<ShoppingListAdapter.ShoppingListViewHolder>() {

    private val shoppingList = ArrayList<ShoppingList>()



    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShoppingListViewHolder {
        val itemView = LayoutInflater.from(parent.context)
            .inflate(R.layout.shopping_list_item, parent, false)

        /** References the node to which market data is stored**/
        val databaseReference = FirebaseDatabase.getInstance().getReference("Users")
        
        return ShoppingListViewHolder(itemView)
    }



    override fun onBindViewHolder(holder: ShoppingListAdapter.ShoppingListViewHolder, position: Int) {
        val currentItem = shoppingList[position]
        holder.sListItem.text = currentItem.shoppingItem

    }



    override fun getItemCount(): Int {
        return shoppingList.size
    }

    fun updateShoppinglist(shoppingList: List<ShoppingList>){
        this.shoppingList.clear()
        this.shoppingList.addAll(shoppingList)
        notifyDataSetChanged()
    }


    class ShoppingListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
        val sListItem : TextView = itemView.findViewById(R.id.ShoppingItemTV)

        override fun onClick(v: View?) {
            databaseReference.child(marketName).setValue(markets).child(key).setValue("")
        }
    }
}
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
  • Does this answer your question? [How to get the key of a child node in Firebase Realtime Database after choosing a child randomly](https://stackoverflow.com/questions/61864594/how-to-get-the-key-of-a-child-node-in-firebase-realtime-database-after-choosing) – KiluSs Nov 01 '22 at 03:05
  • If you consider at some point in time try using [Cloud Firestore](https://firebase.google.com/docs/firestore/), here are some useful articles that might help. [How to delete a record from Firestore on a RecylerView left/right swipe](https://medium.com/firebase-developers/how-to-delete-a-record-from-firestore-on-a-recylerview-left-right-swipe-d65d993f0baf) and [How to delete multiple records from Firestore using RecyclerView multi-selection](https://medium.com/firebase-tips-tricks/how-to-delete-multiple-records-from-firestore-using-recyclerview-multi-selection-96108e4c6166). – Alex Mamo Nov 01 '22 at 07:29
  • Using FirebaseUI database may solve your problem. Using this you can get the key of the child and remove it on click. – Akshay Masram Nov 01 '22 at 10:18
  • I will probably use firestore and firebase UI next time. For now, I just decided to use a delete all button instead. Thank you for everyones input – ottercrossing Nov 01 '22 at 15:51

0 Answers0