2017-11-22 2 views
0

Ich bin Anfänger in Firebase mit Android-Anwendung, es gelingt mir, eine ListView Orte anzuzeigen, jetzt möchte ich einen Ort löschen, wenn ich auf ein Element klicke.Gewusst wie: Löschen des ausgewählten Elements aus der Firebase-Datenbank?

Dies ist mein Versuch:

listPlace.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, final View view,final int position, long id) { 

    final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(EndroitActivity.this); 
     dialogBuilder.setTitle("Delete!"); 
     dialogBuilder.setPositiveButton("Yes...", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Place p = list.get(position); 
       System.out.println(p.getNomPlace()); 

       DatabaseReference dR = FirebaseDatabase.getInstance().getReference("place").child(p.getNomPlace()); 
       dR.removeValue(); 
      } 
     }).setNegativeButton("No", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         Toast.makeText(getApplicationContext(), "Fine, ya coward." 
           , Toast.LENGTH_SHORT).show(); 
        } 
       }); 

     dialogBuilder.create().show(); 

     return true; 
    } 
}); 

Database structure

+0

können Sie bitte Ihre Datenbankstruktur teilen. –

+0

Ich habe meine Frage aktualisiert –

+0

Haben Sie nur 'nomPlace' Feld entfernen? –

Antwort

0
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
Query applesQuery = ref.child("place").orderByChild("nomPlace").equalTo(p.getNomPlace()); 
applesQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) { 
     appleSnapshot.getRef().removeValue(); 
    } 
} 

@Override 
public void onCancelled(DatabaseError databaseError) { 
    Log.e(TAG, "onCancelled", databaseError.toException()); 
} 
}); 
1

Wenn Sie gesamten Knoten, den Sie wie unten zu tun haben, löschen möchten ...

DatabaseReference dR = FirebaseDatabase.getInstance().getReference("place").child("autoKey"); 
       dR.removeValue(); 
dR. removeValue(); 

Sie müssen Ersetzen Sie p.getNomPlace() durch Ihre autoKey. Es wird den gesamten Knoten von bestimmten autoKey entfernen. getUid() kann den Autokey bereitstellen.

+0

Vielen Dank für die Antwort, also sollte ich '.child (" autoKey ")' durch '.child (getUid())' ersetzen –

0

Um einen Datensatz aus einer Firebase-Datenbank zu entfernen, müssen Sie nur die Methode removeValue() direkt auf der Referenz verwenden. Sie müssen den Hörer nicht verwenden. So einen bestimmten Ort zu entfernen, verwenden Sie bitte den folgenden Code:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
rootRef.child("place").child(placeId).removeValue(); 

In dem placeId ist die ID eines bestimmten Ortes, den Sie entfernen möchten. Hinweis: placeId ist nicht identisch mit getUid() oder Benutzer-ID. Um diese ID zu erhalten, müssen Sie getKey() Methode im Moment verwenden Sie erzeugen die eindeutigen Schlüssel push() Methode wie folgt:

String placeId = rootRef.child("place").push().getKey(); 

Mit diesem placeId, können Sie es in jedem DatabaseReference verwenden können.

Verwandte Themen