[英]How to delete an item from ListView and also delete it on Firebase?
我的问题是,如果我尝试删除我的ListView
上的一个项目,所有数据都将被删除到 listview 和我的 firebase 实时数据库上。 我想要的是,如果我长按一个项目,只会删除该项目,而不是ListView
上的所有项目。 谢谢你。 任何帮助表示赞赏
这是我声明的:
MatkulAdapter matkulAdapter = null;
Matkul matkul;
DatabaseReference root = FirebaseDatabase.getInstance().getReference();
DatabaseReference dbReference = root.child("MataKuliah");
这是删除项目的代码:
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Matkul item = matkulAdapter.getItem(position);
matkulAdapter.remove(item);
dbReference.removeValue();
matkulAdapter.notifyDataSetChanged();
return true;
}
});
这是我的数据库:
编辑问题
而且我用.child尝试了这段代码,但数据只在ListView上删除。 因此,当我重新打开 ListView 时,数据又回来了。
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Matkul item = matkulAdapter.getItem(position);
matkulAdapter.remove(item);
dbReference.child(item.getNamaMatkul()).removeValue();
matkulAdapter.notifyDataSetChanged();
当您使用以下代码行时:
dbReference.removeValue();
MataKuliah
下的所有内容都将被删除。 如果只需要删除1595588052231
孩子,那么只需使用以下代码行:
dbReference.child("1595588052231").removeValue();
更好的方法可能是将1595588052231
作为uid
属性的值存储在数据库中,然后使用:
dbReference.child(item.getUid()).removeValue();
您需要在第二个孩子中传递您的 firebase 项目 id (15955880552231),如下代码:
Query query = rdbReference.orderByChild("namaMatkul").equalTo(item.namaMatkul);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot itemSnapshot: dataSnapshot.getChildren()) {
appleSnapshot.getRef().removeValue();
matkulAdapter.remove(item);
matkulAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled", databaseError.toException());
}});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.