Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ListView中删除项目,并在Firebase上删除它?_Java_Android_Firebase_Listview_Firebase Realtime Database - Fatal编程技术网

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()
on
Matkul
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()
on
Matkul
sir,但获取此错误
无法为child()中的参数“pathString”传递null
发生这种情况是因为您试图从数据库中获取的值不存在。正如我前面所说,您还应该将其添加到数据库中。因此您有
namaDosen
namaMaktul
,添加
uid
159558805223
的值。谢谢您,先生,但很抱歉,如何获取firebaseItemID?我应该如何声明它?使用你的click listener中的代码查找特定的ItemThank You Thank You Thank这么多sirr!代码正在工作,但有一个小错误,如果我删除一个项目,它将更改为其他数据或数据将加倍,但当我先返回,然后再次打开它时,它将从列表视图中消失。非常感谢sirr这只是代码段,您需要开发逻辑;)谢谢,先生,但是很抱歉,如何获取firebaseItemID?我应该如何声明它?使用您的click listener中的代码查找特定的项目非常感谢先生!代码正在工作,但有一个小错误,如果我删除一个项目,它将更改为其他数据或数据将加倍,但当我先返回,然后再次打开它时,它将消失这只是一个片段,您需要开发逻辑;)