简体   繁体   English

如何在 recyclerview 上使用 onSwipe 从实时数据库中删除条目

[英]How Can I delete an entry from realtime database using onSwipe on a recyclerview

I am looking to delete an entry using onSwipe, I have this code below that works to swipe but it does not delete from firebase, when I swipe the app crashes.我想使用 onSwipe 删除一个条目,我在下面有这段代码可以滑动,但当我滑动应用程序崩溃时,它不会从 firebase 中删除。 see my code below and the logcat error.请参阅下面的代码和 logcat 错误。

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        expenses.remove(viewHolder.getAdapterPosition());
        adapter.notifyDataSetChanged();

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Expenses").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
        reference.child(postId).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(ExpensesActivity.this, "Expenditure deleted!", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(ExpensesActivity.this, "Something went wrong, try again" + task.getException(), Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

This is the logcat message;这是 logcat 消息;

2022-03-21 14:44:23.365 22734-22734/com.delossantos.expensapp D/AndroidRuntime: Shutting down VM
2022-03-21 14:44:23.366 22734-22734/com.delossantos.expensapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.delossantos.expensapp, PID: 22734
    java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
        at com.google.firebase.database.DatabaseReference.child(DatabaseReference.java:96)
        at com.delossantos.expensapp.ExpensesActivity$6.onSwiped(ExpensesActivity.java:270)
        at androidx.recyclerview.widget.ItemTouchHelper$4.run(ItemTouchHelper.java:712)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7842)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

enter image description here在此处输入图像描述

Looks like your getUid() is null .看起来你的getUid()null You can use below codes to check if the user is currenty logged in or not.您可以使用以下代码检查用户当前是否登录。

final FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
if (fUser != null && postId != null) {
    final String userUid = fUser.getUid();
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Expenses").child(userUid);
    reference.child(postId).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(ExpensesActivity.this, "Expenditure deleted!", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(ExpensesActivity.this, "Something went wrong, try again" + task.getException(), Toast.LENGTH_SHORT).show();
                }
            }
        });
} else {
    //User is missing, do something
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从 Firebase 实时数据库中删除一些数据? - How can I delete some data from Firebase Realtime Database? 如何从我的 Firebase 实时数据库的多个节点填充我的 RecyclerView? - How can I populate my RecyclerView from multiple nodes of my Firebase Realtime Database? 如何在 React Native 中从我的实时 Firebase 数据库中删除单个条目? - How to delete a single entry from my Realtime Firebase database in React Native? 如何使用 Flutter 仅从 firebase 实时数据库中的给定数字获取时间范围? - How can I get only the time range from the given figure in firebase realtime database using Flutter? 如何在实时数据库中使用推送存储两个密钥? - How can I store two keys using push in realtime database? 如何使用 firebase v9 从实时数据库中获取数据? - How can i fetch data from realtime database using firebase v9? 如何使用规则禁止 Firebase 实时数据库中的用户? - How can I ban a User in Firebase realtime Database using the rules? 如何使用毕加索将我的 Firebase 数据库中的图像放到我的 RecyclerView 上? - How can I put images on my RecyclerView from my Firebase database using Picasso? 如何从firebase实时数据库中删除选中的item节点? - How to delete selected item node from firebase realtime database? 如何通过 clearData() 和 user_privacy.json 路径删除 firebase 实时数据库中某些条件为真的整个条目? - How to delete entire entry in firebase realtime database where some condition is true, through clearData() and user_privacy.json path?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM