2017-05-02 3 views
1

verwiesen wurde habe ich einen Knoten für NachrichtenÜberprüfen Sie, ob Daten in einem Knoten vorhanden sind, die von Feuerbasis

News - key -title -content

ich einen neuen Knoten erstellt namens read_news

ReadNews -key -news-key: true -news-key2: true -news-key3: true

Die Frage ist jetzt Wenn ich alle oder einige Einträge im Knoten News von der Konsole lösche, behält der Knoten ReadNews immer noch die Referenz-ID für die gelöschten Nachrichten bei. Wenn ich die App starte, zeigt es zwei Zellen anstelle eines leeren RecyclerView.

Ich habe ein Debugging und ich stelle fest, dass der FirebaseRecylerAdapter noch die Anzahl der Elemente in diesem Knoten zählt, obwohl wo ich das Element in dem Knoten aus referenziert wurde gelöscht wurde.

Wie kann ich eine Bedingung erstellen, um zu wissen, ob die news-key nicht im Knoten News vorhanden ist, und FirebaseRecyclerAdapter überspringt.

mDatabaseRef = FirebaseDatabase.getInstance().getReference().child("newspapers"); 
     mDatabaseRef.child(getRef(position).getKey()).addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       if (dataSnapshot.getValue() == null) { 
        Log.d("dsmfdvmms", ""); 
       }else{ 
        NewsPaper newsPaper = dataSnapshot.getValue(NewsPaper.class); 
        viewHolder.libraryName.setText(newsPaper.getPaper_name()); 

        loadImage(viewHolder.libraryImage, newsPaper.getLogo(), context); 

        vendotName = newsPaper.getPaper_name(); 
        vendorIcon = newsPaper.getLogo(); 
        vendorId = dataSnapshot.getKey(); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

Antwort

2

Sie brauchen nicht, um zu überprüfen, ob ein Schlüssel in den zweiten node existiert, um es von dem anderen Knoten zu löschen. Wenn Sie eine Nachricht in dem News Knoten löschen, löschen Sie die coresponding Verweis aus dem ReadNews Knoten wie folgt aus:

yourRef.child("ReadNews").child(key).child("news-key").removeValue(); 

Hoffe, es hilft.

+0

Das Problem ist, dass ich nicht aus der App löschen, löschte ich sie von der Konsole firebase.com und seine Absturz der App, weil es nicht existierte – SimpiMind

+0

Soweit ich weiß, können Sie dies nicht manuell von der Konsole mit "Regeln". Laut [offiziellem Dokument] (https://firebase.google.com/docs/database/security/) gibt es Regeln zum "Lesen", "Schreiben", "Bestätigen" und "IndexOn" und nicht zum Löschen von Elementen. Sie können Elemente wie oben erwähnt programmgesteuert löschen. –

+0

Ja ich habe, Ihre Antwort gab mir eine Idee, aber nicht die Lösung für das Problem ... was ich getan habe, ist, bevor ich den Adapter Artikel hinzufügen ich überprüfe, ob der Schlüssel in der Haupt-Referenz-Knoten verfügbar ist, wenn es ist verfügbar Ich füge dem Adapter hinzu, und wenn es nicht den Wert lösche, ist seine Referenz nicht vorhanden. – SimpiMind

Verwandte Themen