Как получить указанные c данные из базы данных Firebase в реальном времени при изменении данных - PullRequest
1 голос
/ 13 февраля 2020

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

Структура базы данных

База данных реального времени Firebase

драйвер. java ( добавлены сеттер и геттер)

public class driver {
    private String Email, BusID, Carplate, PhoneNo, Password, Latitude, Longitude;

    public driver(String Email, String BusID, String Carplate, String PhoneNo, String Password,
                  String Latitude, String Longitude){
        this.Email = Email;
        this.BusID = BusID;
        this.Carplate = Carplate;
        this.PhoneNo = PhoneNo;
        this.Password = Password;
        this.Latitude = Latitude;
        this.Longitude = Longitude;
    }
    public String getEmail() {
        return Email;
    }
    public void setEmail(String email) {
        Email = email;
    }
    public String getBusID() {
        return BusID;
    }
    public void setBusID(String busID) {
        BusID = busID;
    }
    public String getCarplate() {
        return Carplate;
    }
    public void setCarplate(String carplate) {
        Carplate = carplate;
    }
    public String getPhoneNo() {
        return PhoneNo;
    }
    public void setPhoneNo(String phoneNo) {
        PhoneNo = phoneNo;
    }
    public String getPassword() {
        return Password;
    }
    public void setPassword(String password) {
        Password = password;
    }

    public String getLatitude() {
        return Latitude;
    }

    public void setLatitude(String latitude) {
        Latitude = latitude;
    }
    public String getLongitude() {
        return Longitude;
    }
    public void setLongitude(String longitude) {
        Longitude = longitude;
    }

Java

databaseReference = FirebaseDatabase.getInstance().getReference("Driver");

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                driver loc = dataSnapshot.getValue(driver.class);
                if (loc != null) {
                    Log.d("Location", "" +loc.getLatitude()+ ", " +loc.getLongitude());
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Как я могу получить данные из базы данных? Пожалуйста, помогите мне. Спасибо

1 Ответ

1 голос
/ 13 февраля 2020

Измените свой класс следующим образом:

public class Driver {
    private String email, busID, carplate, phoneNo, password, latitude, longitude;

    /** No-arg constructor (takes no arguments). */
    public Driver() {
    }

    public Driver(String email, String busID, String carplate, String phoneNo, String password,
                  String latitude, String longitude){
        this.email = email;
        this.busID = busID;
        this.carplate = carplate;
        this.phoneNo = phoneNo;
        this.password = password;
        this.latitude = latitude;
        this.longitude = longitude;
    }

Вы должны следовать соглашению java bean-компонента , затем при добавлении данных создайте новый объект Driver и используйте его внутри setValue():

Driver dirver = new Driver(email, busID, carplate, phoneNo, password,latitude,longitude);
mDatabase.child(userId).setValue(user);

Затем, чтобы получить данные, выполните следующие действия:

databaseReference = FirebaseDatabase.getInstance().getReference("Driver");

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                  Driver driver = dataSnapshot.getValue(Driver.class);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

https://firebase.google.com/docs/database/android/read-and-write

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