En este artículo, veremos cómo eliminar datos agregados dentro de nuestra base de datos en tiempo real de Firebase. Así que avanzaremos hacia la implementación de esta eliminación de datos en Android Firebase.
¿Qué vamos a construir en este artículo?
Mostraremos un cuadro de alerta simple cuando el usuario haga clic largo en el elemento de RecyclerView . Tendrá dos opciones. (Eliminar y Cancelar). Cuando el usuario haga clic en eliminar, simplemente eliminará ese valor. Puede consultar Cómo guardar datos en Firebase Realtime Database en Android para aprender a guardar datos en Firebase.
Nota : puede usar Hashmap para guardar datos en firebase.
Además, también puede agregar datos directamente en firebase como se muestra a continuación
Implementación paso a paso
Paso 1: crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/name" android:textSize="22sp" android:text="Loreum" android:textStyle="bold"/> </LinearLayout>
Paso 3: trabajar con el archivo DModel.java
Vaya al archivo DModel.java y consulte el siguiente código. A continuación se muestra el código para el archivo DModel.java .
Java
package com.anni.uploaddataexcelsheet; public class DModel { public DModel() { } public String getTime() { return time; } public DModel(String time, String name) { this.time = time; this.name = name; } public void setTime(String time) { this.time = time; } String time; public DModel(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } String name; }
Paso 4: trabajar con el archivo DAdapter.java
Vaya al archivo DAdapter.java y consulte el siguiente código. A continuación se muestra el código para el archivo DAdapter.java
Java
package com.anni.uploaddataexcelsheet; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.Query; import com.google.firebase.database.ValueEventListener; import java.util.List; public class DAdapter extends RecyclerView.Adapter { List<DModel> notifications; public DAdapter(List<DModel> notifications, Context context) { this.notifications = notifications; this.context = context; } Context context; @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.row_delete,parent,false); return new MyHolder(view); } @Override public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) { // get the item value by positions String text=notifications.get(position).getName(); final String time=notifications.get(position).getTime(); ((MyHolder)holder).notification.setText(text); // click on item to be deleted ((MyHolder)holder).notification.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CharSequence options[]=new CharSequence[]{ // select any from the value "Delete", "Cancel", }; AlertDialog.Builder builder=new AlertDialog.Builder(holder.itemView.getContext()); builder.setTitle("Delete Content"); builder.setItems(options, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // if delete option is choosed // then call delete function if(which==0) { delete(position,time); } } }); builder.show(); } }); } private void delete(int position, String time) { // creating a variable for our Database // Reference for Firebase. DatabaseReference dbref= FirebaseDatabase.getInstance().getReference().child("DataValue"); // we are use add listerner // for event listener method // which is called with query. Query query=dbref.child(time); query.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { // remove the value at reference dataSnapshot.getRef().removeValue(); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); } @Override public int getItemCount() { return notifications.size(); } class MyHolder extends RecyclerView.ViewHolder{ TextView notification; public MyHolder(@NonNull View itemView) { super(itemView); notification=itemView.findViewById(R.id.name); } } }
Paso 6: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código para el archivo MainActivity.java
Java
import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import java.util.ArrayList; import java.util.List; public class DeleteData extends AppCompatActivity { List<DModel> notifications; DAdapter adapterNotification; RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_delete_data); // Initialise layout recyclerView=findViewById(R.id.recyclerview); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(DeleteData.this); // reverse tha layout linearLayoutManager.setReverseLayout(true); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(linearLayoutManager); notifications=new ArrayList<>(); // creating a variable for our Database // Reference for Firebase. DatabaseReference reference= FirebaseDatabase.getInstance().getReference("DataValue"); // we are using add value event listener method // which is called with database reference. reference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { // clear the data notifications.clear(); for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren()) { DModel modelNotification = dataSnapshot1.getValue(DModel.class); notifications.add(modelNotification); adapterNotification = new DAdapter(notifications,DeleteData.this); // set the adapter recyclerView.setAdapter(adapterNotification); adapterNotification.notifyDataSetChanged(); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); } }
Estructura de la base de datos
Producción: