Java 如何从ListView中删除项目,并在Firebase上删除它?
我的问题是,如果我尝试删除我的Java 如何从ListView中删除项目,并在Firebase上删除它?,java,android,firebase,listview,firebase-realtime-database,Java,Android,Firebase,Listview,Firebase Realtime Database,我的问题是,如果我尝试删除我的ListView上的一个项目,则ListView和我的firebase实时数据库上的所有数据都将被删除。我想要的是,如果我长时间单击某个项目,则只会删除该项目,而不会删除列表视图中的所有项目。非常感谢。谢谢你的帮助 我声明如下: MatkulAdapter matkulAdapter = null; Matkul matkul; DatabaseReference root = FirebaseDatabase.getInstance().getReferen
ListView
上的一个项目,则ListView和我的firebase实时数据库上的所有数据都将被删除。我想要的是,如果我长时间单击某个项目,则只会删除该项目,而不会删除列表视图中的所有项目。非常感谢。谢谢你的帮助
我声明如下:
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;
}
});
listView.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
Matkul item=matkulAdapter.getItem(位置);
matkulAdapter.移除(项目);
dbReference.removeValue();
matkulAdapter.notifyDataSetChanged();
返回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();
listView.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
Matkul item=matkulAdapter.getItem(位置);
matkulAdapter.移除(项目);
dbReference.child(item.getnamatkul()).removeValue();
matkulAdapter.notifyDataSetChanged();
使用以下代码行时:
dbReference.removeValue();
dbReference.child("1595588052231").removeValue();
MataKuliah
下面的所有内容都将被删除。如果只需要删除1595588052231
子项,则只需使用以下代码行:
dbReference.removeValue();
dbReference.child("1595588052231").removeValue();
更好的方法可能是将1595588052231
存储为数据库中uid
属性的值,然后使用:
dbReference.child(item.getUid()).removeValue();
使用以下代码行时:
dbReference.removeValue();
dbReference.child("1595588052231").removeValue();
MataKuliah
下面的所有内容都将被删除。如果只需要删除1595588052231
子项,则只需使用以下代码行:
dbReference.removeValue();
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());
}});
您需要在第二个子项中传递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());
}});
谢谢,先生,但是如果我想删除MataKuliah上的随机项怎么办?我尝试使用以下代码dbReference.child(item.getUid()).removeValue();
但是getUid()上有错误您有一个错误,因为您应该在Matkul
类中添加一个名为uid
的新属性和相应的getUid()
getter。在您的1595588052231
节点下的数据库中,您还应该具有uid
属性,该属性应该包含相同的1595588052231
值。然后一切都会正常工作。如果您需要获取随机值,请签出。我已经添加了私有字符串uid
并获取getUid()
onMatkul
sir,但获取此错误无法为child()中的参数“pathString”传递null
发生这种情况是因为您试图从数据库中获取的值不存在。正如我前面所说的,您还应该将其添加到数据库中。因此您有namaDosen
和namaMaktul
,添加uid
和159558805223
的值。谢谢您,先生,但是如果我想删除rando呢m MataKuliah上的item?我尝试以下代码dbReference.child(item.getUid()).removeValue();
但是getUid()上有错误您有一个错误,因为您应该在Matkul
类中添加一个名为uid
的新属性和相应的getUid()
getter。在您的1595588052231
节点下的数据库中,您还应该具有uid
属性,该属性应该包含相同的1595588052231
值。然后一切都会正常工作。如果您需要获取随机值,请签出。我已经添加了私有字符串uid
并获取getUid()
onMatkul
sir,但获取此错误无法为child()中的参数“pathString”传递null
发生这种情况是因为您试图从数据库中获取的值不存在。正如我前面所说,您还应该将其添加到数据库中。因此您有namaDosen
和namaMaktul
,添加uid
和159558805223
的值。谢谢您,先生,但很抱歉,如何获取firebaseItemID?我应该如何声明它?使用你的click listener中的代码查找特定的ItemThank You Thank You Thank这么多sirr!代码正在工作,但有一个小错误,如果我删除一个项目,它将更改为其他数据或数据将加倍,但当我先返回,然后再次打开它时,它将从列表视图中消失。非常感谢sirr这只是代码段,您需要开发逻辑;)谢谢,先生,但是很抱歉,如何获取firebaseItemID?我应该如何声明它?使用您的click listener中的代码查找特定的项目非常感谢先生!代码正在工作,但有一个小错误,如果我删除一个项目,它将更改为其他数据或数据将加倍,但当我先返回,然后再次打开它时,它将消失这只是一个片段,您需要开发逻辑;)