2017-04-22 1 views
1

Ich benutze RecyclerView, jede Zeile stellt ein Lager, und seine Verbindung zu einem Firebase-Konto, das Benutzerauth hat, und jedes Mal, wenn ein Benutzer erstellt wird, füge ich ihn zu meiner Firebase-Datenbank (wenn sie registriere mein Firebase-Konto), jeder Benutzer hat das Feld "user_stocks" (child) und ich habe einen longClickListener gemacht, der eine Zeile in meiner Bestandsliste löscht. Das Problem ist, dass ich diesen Bestand im Benutzerkonto löschen muss: enter image description hereLöschen Feld von Firebase-Datenbank (Android)

ich kann nicht einen Weg finden, den Bestand von der Firebase-Datenbank zu löschen:

public void deleteFromFirebase(String user_id) { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("users").child(user_id); 

     myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       User user = dataSnapshot.getValue(User.class); 
       //No metter what i did, it did not delete from fb 
      } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
    } 
}); 
} 

Kann so Bitte zeigen Sie mir in die richtige Richtung? Danke!

Antwort

1

Legen Sie einfach null in diesem Kind als Wert

FirebaseDatabase.getInstance().getReference("users").child(user_id).setValue(null); 

aktualisieren

Löschen von Wert

public void deleteFromFirebase(String user_id,final String stockName) { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("users").child(user_id).child("user_stocks"); 

     myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot stock : dataSnapshot.getChildren()) { 
       if(stock.getValue().equals(stockName)) 
        stock.getRef().removeValue(); 
       } 
      } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
    } 
}); 
} 
+0

es nicht funktioniert, auch würde es den Eintrag löschen oder nur die ändern Wert auf null? – Coder123

+0

@ Coder123 Es würde den Eintrag löschen. – pantos27

+0

@ Coder123 auch, wird Ihr Hörer dort nicht jedes Mal, wenn der Wert sich ändert, nur einmal ausgelöst. Überprüfen Sie die Firebase-Konsole für den realen Wert – pantos27