【发布时间】:2020-04-05 09:01:20
【问题描述】:
我使用ListView 来显示存储在 Firebase 数据库中的数据,当我长按列表项时,我想获取 Firebase 中列表项源的自动生成 ID,以便能够更新或删除数据通过获取 ID。
patientListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Patient p = patientList.get(position);
return false;
}
});
UPDATE:我用它来向我的数据库添加数据
try {
String name = mNameEditText.getText().toString().trim();
String phone = mPhoneEditText.getText().toString().trim();
String age = mAgeEditText.getText().toString().trim();
String aptDate = date();
String visitType = radioListener();
String gender = mGenderSpinner.getSelectedItem().toString();
String descCondition = mDescCondEditText.getText().toString().trim();
if (name.isEmpty()) {
mNameEditText.setError("Enter Your Name Please!");
mNameEditText.requestFocus();
} else if (phone.isEmpty()) {
mPhoneEditText.setError("Enter Your Phone");
mPhoneEditText.requestFocus();
} else if (age.isEmpty()) {
mAgeEditText.setError("Enter Your Age");
mAgeEditText.requestFocus();
} else if (aptDate.isEmpty()) {
dateEditText.setError("Please Enter Appointment Date");
dateEditText.requestFocus();
} else {
Patient appointment = new Patient(name, phone, age, descCondition, gender, aptDate, visitType);
mDatabaseRef.push().setValue(appointment);
successAlertDialog();
mNameEditText.setText("");
mPhoneEditText.setText("");
mAgeEditText.setText("");
dateEditText.setText("");
mGenderSpinner.setSelection(0);
mDescCondEditText.setText("");
}
这是我的模块类 包 com.sharhospital;
public class Patient {
private String name;
private String phone;
private String age;
private String describeCond;
private String gender;
private String date;
private String typeOfVisit;
private String docName;
public Patient(String name, String phone, String age, String describeCond, String gender, String date, String typeOfVisit) {
this.name = name;
this.phone = phone;
this.age = age;
this.describeCond = describeCond;
this.gender = gender;
this.date = date;
this.typeOfVisit = typeOfVisit;
}
public Patient(String name, String phone, String age, String describeCond, String gender, String date, String typeOfVisit, String docName) {
this.name = name;
this.phone = phone;
this.age = age;
this.describeCond = describeCond;
this.gender = gender;
this.date = date;
this.typeOfVisit = typeOfVisit;
this.docName = docName;
}
public Patient() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getDescribeCond() {
return describeCond;
}
public void setDescribeCond(String describeCond) {
this.describeCond = describeCond;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTypeOfVisit() {
return typeOfVisit;
}
public void setTypeOfVisit(String typeOfVisit) {
this.typeOfVisit = typeOfVisit;
}
public String getDocName() {
return docName;
}
public void setDocName(String docName) {
this.docName = docName;
}
}
修改后的onItemLongListerner
patientListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Patient p = patientList.get(position);
String Id = p.getId();
mDatabaseRef.child(Id).removeValue();
return false;
}
});
向数据库发送数据
String id = mDatabaseRef.push().getKey();
Patient appointment = new Patient(id,name, phone, age, descCondition, gender, aptDate, visitType);
mDatabaseRef.child(id).setValue(appointment);
【问题讨论】:
-
在这里查看我的答案,它可能会对您有所帮助:stackoverflow.com/questions/60924912
-
为什么不将自动生成的 id 存储为
Patient类的属性? -
@AlexMamo 可能是这样,但我仍然不知道如何实现这一目标
-
当您将患者添加到数据库时,将推送的 id 存储到变量中。
-
@AlexMamo 如果你有代码示例,会很有帮助
标签: java android firebase listview firebase-realtime-database