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"
が削除されましたが、ここではリスト内の最後の項目は削除されます。
データベースから削除されたのと同じ名前をリストから削除するにはどうすればよいですか?
'notifyDataSetChanged();'は何ですか? –
削除されたアイテムがビューから削除されるようにアダプタをリロードします –