我在活动中有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"
被删除了,但是在列表中,最后一个项目被移除了。
如何从列表中删除从数据库中删除的完全相同的名称?
答案 0 :(得分:1)
从中删除数据后必须刷新适配器。
aFastItemAdapter.remove(aFastItemAdapter.getAdapterItemCount() - 1);
notifyDataSetChanged();