0

私はRecyclerViewをアクティビティに持ち、ユーザがこのアクティビティをデバイスから開くと、recyclerviewに名前が追加されます。ここでFirebaseで子が削除されたときにrecyclerviewから正確な名前を削除できません

は私のコードです:

 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) { 

      } 
     }); 

ここprepareData();方法です: -

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); 
} 

は名前が追加取得しているが、問題は、データベースに削除として、彼らは正確に削除取得されていないことです。データベースの場合と同様に、"John"が削除されましたが、ここではリスト内の最後の項目は削除されます。

データベースから削除されたのと同じ名前をリストから削除するにはどうすればよいですか?

答えて

1

アダプタからデータを削除した後にアダプタを更新する必要があります。

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

'notifyDataSetChanged();'は何ですか? –

+0

削除されたアイテムがビューから削除されるようにアダプタをリロードします –

関連する問題