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