英文:
Get the id of firebase data
问题
使用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);
String Id = p.getId();
mDatabaseRef.child(Id).removeValue();
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("");
}
}
这是我的模块类:
package com.sharhospital;
public class Patient {
// 类的属性和方法在这里...
}
更改后的onItemLongClickListener
:
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);
英文:
I use a ListView
to show the data stored in Firebase database and when I long click on a list item I want to get the auto-generated Id of the list item source in Firebase to be able to update or delete data by getting the 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: I use this to add data to my database
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("");
}
and this is my module class
package 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 after changes
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;
}
});
sending data to database
String id = mDatabaseRef.push().getKey();
Patient appointment = new Patient(id,name, phone, age, descCondition, gender, aptDate, visitType);
mDatabaseRef.child(id).setValue(appointment);
答案1
得分: 0
要解决这个问题,请将您的类更改为:
public class Patient {
private String id;
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 id, String name, String phone, String age, String describeCond, String gender, String date, String typeOfVisit) {
this.id = id;
this.name = name;
this.phone = phone;
this.age = age;
this.describeCond = describeCond;
this.gender = gender;
this.date = date;
this.typeOfVisit = typeOfVisit;
}
public Patient(String id, String name, String phone, String age, String describeCond, String gender, String date, String typeOfVisit, String docName) {
this.id = id;
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 getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
将数据添加到数据库时,请使用以下代码行:
String id = mDatabaseRef.push().getKey();
Patient appointment = new Patient(id, name, phone, age, descCondition, gender, aptDate, visitType);
mDatabaseRef.child(id).setValue(appointment);
现在,在 onItemLongClick()
方法中:
patientListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Patient p = patientList.get(position);
String patientId = p.getId();
mDatabaseRef.child(patientId).removeValue(); // 移除特定对象
return false;
}
});
注:此方法仅适用于新添加的对象,因为只有这些对象包含 id。
英文:
To solve this, please change your class to:
public class Patient {
private String id;
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 id, String name, String phone, String age, String describeCond, String gender, String date, String typeOfVisit) {
this.id = id;
this.name = name;
this.phone = phone;
this.age = age;
this.describeCond = describeCond;
this.gender = gender;
this.date = date;
this.typeOfVisit = typeOfVisit;
}
public Patient(String id, String name, String phone, String age, String describeCond, String gender, String date, String typeOfVisit, String docName) {
this.id = id;
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 getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
When you add the data to the database, use the following lines of code:
String id = mDatabaseRef.push().getKey();
Patient appointment = new Patient(id, name, phone, age, descCondition, gender, aptDate, visitType);
mDatabaseRef.child(id).setValue(appointment);
Now, in the onItemLongClick()
method:
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(); //Remove that particular object
return false;
}
});
P.S. This will work only for the newly added objects because only those objects contain the id.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论