アクティビティがRecyclerView
あり、ユーザーがデバイスからこのアクティビティを開くと、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"
削除されましたが、ここではリストの最後の項目が削除されます。
データベースから削除されたのとまったく同じ名前をリストから削除するにはどうすればよいですか?