从firebase android中删除一个孩子?

时间:2018-03-11 12:58:08

标签: android google-maps firebase firebase-realtime-database google-maps-markers

        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker) {
//                Toast.makeText(Map.this, marker.getPosition()+"", Toast.LENGTH_SHORT).show();

                Query query = databaseReferenceMarkers.orderByChild("lat").equalTo(marker.getPosition().latitude);
                query.addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    }

                    @Override
                    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                    }

                    @Override
                    public void onChildRemoved(DataSnapshot dataSnapshot) {
                        Toast.makeText(Map.this, "test", Toast.LENGTH_SHORT).show();
                        dataSnapshot.getRef().removeValue();
                    }

                    @Override
                    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
                return true;
            }
        });

为什么我无法删除标记?

onChildRemoved() - 没有回复。

1 个答案:

答案 0 :(得分:1)

问题是你正在添加一个值更改侦听器,因此只有在删除子节点后才会调用sudo make install ,但是你要在回调函数中删除它。

试试这样:

onChildRemoved()

查询返回匹配的数据快照集合。然后你需要迭代它们删除它们中的每一个。