[英]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.