Как получить данные с помощью базы данных Firebase Realtime - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу получить данные, которые я сохранил в своей базе данных в реальном времени.

С точкой останова я вижу, что мой dataSnapshot содержит хорошие значения. Затем я хочу создать экземпляр объекта строки из полей dataSnapshot (класс Line содержит поля x1, y1, x2 и y2).

databaseReference.addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (isDrawer()) {
          return;
        }
        Line line = dataSnapshot.getValue(Line.class);
        if (line != null) {
          Log.i("cc", "Values : " + line.getX1() + " " + line.getX2() + " " + line.getY1() + " " + line.getY2());
          addLine(line);
        }
}

Моя проблема в том, что полученный мной линейный объект содержит x1 = 0, x2 = 0, y1 = 0, y2 = 0 вместо той же координаты, что и снимок.

Редактировать: Моя текущая реализация строки довольно проста:

public class Line {

private float x1;
private float y1;
private float x2;
private float y2;

public Line() {
}

public Line(float x1, float y1, float x2, float y2) {
    this.x1 = x1;
    this.y1 = y1;
    this.x2 = x2;
    this.y2 = y2;
}

public Line(Line line) {
    this.x1 = line.getX1();
    this.x2 = line.getX2();
    this.y1 = line.getY1();
    this.y2 = line.getY2();
}

public float getX1() {
    return x1;
}

public void setX1(float x1) {
    this.x1 = x1;
}

public float getY1() {
    return y1;
}

public void setY1(float y1) {
    this.y1 = y1;
}

public float getX2() {
    return x2;
}

public void setX2(float x2) {
    this.x2 = x2;
}

public float getY2() {
    return y2;
}

public void setY2(float y2) {
    this.y2 = y2;
}

Я создаю ссылку на базу данных следующим образом:

        databaseReference = database.getReference("draws/unique_draw");

И я храню свои данные так:

databaseReference.push().setValue(line);

@ Алекс Мамо Вот предварительный просмотр моих данных (строк)

Почему?

1 Ответ

0 голосов
/ 06 сентября 2018

вам нужно получить доступ к отдельным элементам с помощью .getChildren():

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    for (DataSnapshot dataSnapshot: dataSnapshot.getChildren()) {
        Line line = dataSnapshot.getValue(Line.class);
        if (line != null) {
            Log.i("cc", "Values : " + line.getX1() + " " + line.getX2() + " " + line.getY1() + " " + line.getY2());
            addLine(line);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...