0

Ich habe eine RecyclerView in einer Aktivität, und wenn der Benutzer diese Aktivität von seinen Geräten aus öffnet, werden der Recycleransicht Namen hinzugefügt.Konkreter Name kann nicht aus der Recycleransicht entfernt werden, wenn unter Firebase eine untergeordnete Komponente entfernt wird

Hier ist mein Code:

 mDatabase.child(rID).addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

        Map<String, String> map = (Map<String, String>) dataSnapshot.getValue(); 
        pA = map.get("pName"); 
        uA = map.get("pUrl"); 
        String cLatS = map.get("cLat").trim(); 
        currentLtAU = Double.parseDouble(cLatS); 
        String cLngS = map.get("cLng").trim(); 
        currentLnAU = Double.parseDouble(cLngS); 

        layout.setVisibility(View.VISIBLE); 
        progressBar.setVisibility(View.INVISIBLE); 

        prepareData(); 
       } else { 
        Snackbar snackbar = Snackbar 
          .make(coordinatorLayout, "Some error occurred. Please retry!", Snackbar.LENGTH_SHORT); 
        snackbar.show(); 
        onBackPressed(); 
       } 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

       Log.d("childRemoved", dataSnapshot.getKey()); 

       aModelClass = new AModelClass(pA, uA, String.valueOf(currentLtAU), String.valueOf(currentLnAU), null, s, v, availableFrom, rID, userID2, noa); 
       aFastItemAdapter.remove(aFastItemAdapter.getAdapterItemCount() - 1); 
       aList.setAdapter(aFastItemAdapter); 
       aList.smoothScrollToPosition(0); 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

Hier prepareData(); Methode: -

public void prepareData() { 
     aModelClass = new AModelClass(pA, uA, String.valueOf(currentLtAU), String.valueOf(currentLnAU), null, s, v, availableFrom, rID, userID2, noa); 
     aFastItemAdapter.add(aModelClass); 
     aList.setAdapter(aFastItemAdapter); 
     aList.smoothScrollToPosition(0); 
} 

Die Namen hinzugefügt werden immer aber das Problem, dass sie ist nicht genau in der Datenbank als entfernt entfernt zu werden . Wie in der Datenbank, "John" wurde entfernt, aber hier in der Liste wird das letzte Element, was auch immer es ist, entfernt.

Wie kann ich genau den gleichen Namen entfernen, der auch aus der Liste aus der Datenbank entfernt wurde?

Antwort

1

müssen Sie den Adapter aktualisieren, nachdem Sie Daten daraus entfernt haben.

aFastItemAdapter.remove(aFastItemAdapter.getAdapterItemCount() - 1); 
notifyDataSetChanged(); 
+0

Was 'notifyDataSetChanged();' tun? –

+0

wird Ihr Adapter neu geladen, damit entfernte Elemente aus der Ansicht entfernt werden –

Verwandte Themen