Получить идентификатор данных Firebase - PullRequest
1 голос
/ 05 апреля 2020

Я использую ListView, чтобы показать данные, хранящиеся в базе данных Firebase, и когда я долго щелкаю по элементу списка, я хочу получить автоматически сгенерированный идентификатор источника элемента списка в Firebase, чтобы иметь возможность обновлять или удалять данные путем получения идентификатора.

patientListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                Patient p = patientList.get(position);

                return false;
            }
        });

ОБНОВЛЕНИЕ : я использую это для добавления данных в мою базу данных

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);

enter image description here

1 Ответ

0 голосов
/ 05 апреля 2020

Чтобы решить эту проблему, измените свой класс на:

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 id = p.getId();
            mDatabaseRef.child(id).removeValue(); //Remove that particular object
            return false;
        }
    });

PS Это будет работать только для вновь добавленных объектов, поскольку только эти объекты содержат идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...