我是使用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;
}
});
答案 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。请注意,placeId
与getUid()
或用户ID不同。要获取该ID,您需要在使用getKey()
方法生成该唯一键时使用push()
方法,如下所示:
String placeId = rootRef.child("place").push().getKey();
拥有此placeId
,您可以在任何DatabaseReference
中使用它。