如何从Firebase数据库中删除所选项目?

时间:2017-11-22 11:32:58

标签: android listview firebase firebase-realtime-database

我是使用Android应用程序的Firebase初学者,我成功显示ListView个地方,现在我想在点击某个项目时删除一个地方。

这是我的尝试:

listPlace.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, final View view,final int position, long id) {

     final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(EndroitActivity.this);
        dialogBuilder.setTitle("Delete!");
        dialogBuilder.setPositiveButton("Yes...", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Place p = list.get(position);
                System.out.println(p.getNomPlace());

                DatabaseReference dR = FirebaseDatabase.getInstance().getReference("place").child(p.getNomPlace());
                dR.removeValue();
            }
        }).setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getApplicationContext(), "Fine, ya coward."
                                , Toast.LENGTH_SHORT).show();
                    }
                });

        dialogBuilder.create().show();

        return true;
    }
});

Database structure

3 个答案:

答案 0 :(得分:1)

如果你想删除整个节点,你必须这样做......

DatabaseReference dR = FirebaseDatabase.getInstance().getReference("place").child("autoKey");
                dR.removeValue();
dR. removeValue();

您必须将p.getNomPlace()替换为autoKey。它将从特定autoKey中删除整个节点。 getUid()可以提供自动密钥。

答案 1 :(得分:0)

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query applesQuery = ref.child("place").orderByChild("nomPlace").equalTo(p.getNomPlace());
applesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) {
        appleSnapshot.getRef().removeValue();
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {
    Log.e(TAG, "onCancelled", databaseError.toException());
}
});

答案 2 :(得分:0)

要从Firebase数据库中删除记录,您只需直接在引用上使用removeValue()方法即可。您根本不需要使用听众。因此,要删除特定位置,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("place").child(placeId).removeValue();

其中placeId是您要删除的特定地点的ID。请注意,placeIdgetUid()或用户ID不同。要获取该ID,您需要在使用getKey()方法生成该唯一键时使用push()方法,如下所示:

String placeId = rootRef.child("place").push().getKey();

拥有此placeId,您可以在任何DatabaseReference中使用它。