在Firebase

时间:2017-01-28 03:48:00

标签: android firebase android-recyclerview firebase-realtime-database fastadapter

我在活动中有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"被删除了,但是在列表中,最后一个项目被移除了。

如何从列表中删除从数据库中删除的完全相同的名称?

1 个答案:

答案 0 :(得分:1)

从中删除数据后必须刷新适配器。

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