繁体   English   中英

在Firebase中删除子级后,无法从recyclerview中删除确切名称

[英]Unable to remove exact name from the recyclerview when child is removed in Firebase

我在一个活动中有一个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"被删除,但在列表的此处,最后一个项目(无论它是什么)都被删除。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM