Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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
Android 使用Firestore中的多个文档填充微调器如何删除所选项目?_Android_Firebase_Google Cloud Firestore_Spinner - Fatal编程技术网

Android 使用Firestore中的多个文档填充微调器如何删除所选项目?

Android 使用Firestore中的多个文档填充微调器如何删除所选项目?,android,firebase,google-cloud-firestore,spinner,Android,Firebase,Google Cloud Firestore,Spinner,正如您从我的标题中看到的,我有一个填充了从Firestore检索到的数据的微调器,现在我不知道如何从Firestore中删除所选项目,具体地说,我如何获取所选项目的文档ID以便删除它,下面是供感兴趣的人使用的解决方案: private FirebaseFirestore db = FirebaseFirestore.getInstance(); private Spinner spinner; @Override protected void onCreate(Bundle savedInst

正如您从我的标题中看到的,我有一个填充了从Firestore检索到的数据的微调器,现在我不知道如何从Firestore中删除所选项目,具体地说,我如何获取所选项目的文档ID以便删除它,下面是供感兴趣的人使用的解决方案:

private FirebaseFirestore db = FirebaseFirestore.getInstance();
private Spinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_booking_dates);

    spinner = findViewById(R.id.spinner2);

    final Button save = findViewById(R.id.saveDate);

    final List<String> idlist = new ArrayList<>();
    final List<String> list = new ArrayList<>();

    //list.add("Choose a Date");

    db.collection("BookingDates").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {

                    list.add(document.get("Date").toString());
                    idlist.add(document.getId());


                }


                final ArrayAdapter<String> adapter = new ArrayAdapter<>(BookingDates.this, android.R.layout.simple_spinner_item
                        ,list);
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapter);

                spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view,final int i, long l) {
                        String id = idlist.get(i);
                        Toast.makeText(BookingDates.this, "ID: " + id , Toast.LENGTH_SHORT).show();
                        save.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                String id = idlist.get(i);
                                db.collection("BookingDates").document(id).delete();
                                Toast.makeText(BookingDates.this, "ID: " + id + " /DELETED", Toast.LENGTH_SHORT).show();
                            }
                        });

                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> adapterView) {

                    }
                });

            } else {
                Toast.makeText(BookingDates.this, task.getException().toString(), Toast.LENGTH_SHORT).show();
            }
        }
    });
}
私有FirebaseFirestore db=FirebaseFirestore.getInstance(); 私人纺纱机; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u booking\u dates); 喷丝器=findViewById(R.id.喷丝器2); 最终按钮保存=findViewById(R.id.saveDate); final List idlist=new ArrayList(); 最终列表=新的ArrayList(); //列表。添加(“选择日期”); db.collection(“BookingDates”).get().addOnCompleteListener(新的OnCompleteListener(){ @凌驾 未完成的公共void(@NonNull任务){ if(task.issusccessful()){ 对于(QueryDocumentSnapshot文档:task.getResult()){ list.add(document.get(“Date”).toString()); idlist.add(document.getId()); } 最终ArrayAdapter=新的ArrayAdapter(BookingDates.this,android.R.layout.simple\u微调器\u项 ,名单); setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); 旋转器。设置适配器(适配器); spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){ @凌驾 已选择公共视图(AdapterView AdapterView、View-View、final int i、long l){ String id=idlist.get(i); Toast.makeText(BookingDates.this,“ID:+ID,Toast.LENGTH_SHORT).show(); save.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ String id=idlist.get(i); db.collection(“BookingDates”).document(id).delete(); Toast.makeText(BookingDates.this,“ID:+ID+”/DELETED”,Toast.LENGTH\u SHORT.show(); } }); } @凌驾 未选择公共无效(AdapterView AdapterView){ } }); }否则{ Toast.makeText(BookingDates.this,task.getException().toString(),Toast.LENGTH_SHORT).show(); } } }); }
要删除文档,您需要知道它的ID。因此,当您将日期添加到微调器时,您还需要将文档ID保留在某个位置,以便在用户单击“完成”按钮时能够查找它

一个过于简单的例子:

for (QueryDocumentSnapshot document : task.getResult()) {
    list.add(document.get("Date").toString());
    idlist.add(document.getId();
}
其中,
idlist
只是一个ID列表,类似于
list
是一个日期列表

final List<String> idlist = new ArrayList<>();
final List idlist=new ArrayList();
然后,当用户在微调器中选择一个项目时:

public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
  String id = idlist.get(position);
  db.collection("BookingDates").doc(id).delete();
}
public void已选中(AdapterView AdapterView、视图视图、内部位置、长id){
String id=idlist.get(位置);
db.collection(“BookingDates”).doc(id).delete();
}