Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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 从适配器有条件删除_Java_Android_Firebase_Google Cloud Firestore_Android Adapter - Fatal编程技术网

Java 从适配器有条件删除

Java 从适配器有条件删除,java,android,firebase,google-cloud-firestore,android-adapter,Java,Android,Firebase,Google Cloud Firestore,Android Adapter,如果我的问题听起来很傻,请提前道歉。我是个新手。 在我的应用程序中,我有一个适配器,显示从Firebase Firestore查询的文档。 目前有一个OnSwipe侦听器可以删除文档。 我想将其设置为只有特定用户记录的文档才能被删除。含义:用户只能删除自己编写的文档,不能删除他人编写的文档。 请告诉我怎么做 目前代码如下所示: new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | Item

如果我的问题听起来很傻,请提前道歉。我是个新手。 在我的应用程序中,我有一个适配器,显示从Firebase Firestore查询的文档。
目前有一个OnSwipe侦听器可以删除文档。 我想将其设置为只有特定用户记录的文档才能被删除。含义:用户只能删除自己编写的文档,不能删除他人编写的文档。 请告诉我怎么做

目前代码如下所示:

new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

                adapter.deleteItem(viewHolder.getAdapterPosition());

            }
        }).attachToRecyclerView(recyclerView);

您需要实现安全规则,以将删除操作限制为文档作者。在本文档[1]中,它提到了如何设置写入规则,其中还包含创建、更新和删除规则[2]。因此,您可以设置如下规则:

service cloud.firestore {
    match /databases/{database}/documents {
        match /{document=**} {
            allow read; 
            allow delete: if request.auth.uid == resource.data.userid;
        }
    }
}
如上所述,如果您能够提供deleteitem()的内容和文档结构,就更清楚了

[1]
[2] 谢谢大家的帮助。 我确实修改了我的delete方法,它成功了: 谢谢你的提示和帮助

 public void deleteItem(int position, String userID) {
    String docUserID = getSnapshots().getSnapshot(position).getString("userID");
    Log.i("deleteItem", "docUserID: " + docUserID + " userID: " + userID);
    if (docUserID != null) {
        if (docUserID.equals(userID)) {
            getSnapshots().getSnapshot(position).getReference().delete();
            Log.i("deleteItem", " if worked... ");

        } else {
            Log.i("deleteItem", " if did not work");
        }
    }

}

请提供方法
deleteItem()
的内容以及“文档”的数据结构。请编辑您的问题并将您的数据库结构添加为屏幕截图。请用@AlexMamoThank回复你们。不知道如何在这里添加屏幕截图。deleteItem()如下所示:public void deleteItem(int position){getSnapshots().getSnapshot(position).getReference().delete();}感谢您的帮助。不确定如何在此处显示文档结构。每个文档都有一些字段,如果它们是userID,则有一个字段,userID也可以为null。public void deleteItem(int位置){getSnapshots().getSnapshot(位置).getReference().delete();}