Получение данных из Firebase в активности Android - PullRequest
0 голосов
/ 20 сентября 2018

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

Мой код в упражнении:

public class Violations extends AppCompatActivity
{
TextView textView7;

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dbref = database.getReference("save");

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_violations);

    textView7 = findViewById(R.id.textView7);

    dbref.addValueEventListener(new ValueEventListener()
    {
        ArrayList<String> Violations = new ArrayList<>();
        @Override
        public void onDataChange(DataSnapshot dataSnapshot)
        {
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren())
            {
                Violations.add(postSnapshot.getValue().toString());
                System.out.println(postSnapshot.getValue().toString());
            }
            for(int i=0; i < Violations.size(); i++)
            {
                textView7.setText(textView7.getText() + Violations.get(i) + System.lineSeparator());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });
}
}

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

Данные Firebase выглядят так:

enter image description here

Может кто-нибудь помочь мне там?

Заранее спасибо.

Ответы [ 3 ]

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

Инициализируйте базу данных Firebase и метод DatabaseReference внутри onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_violations);

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference dbref = database.getReference("save");

    ...
    ..

Кроме того, вы получаете ссылку save, но база данных Firebase показывает: you violate ....Вы можете попробовать изменить имя на save или получить правильные данные: you violate ....

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

Я не могу видеть в вашей схеме базы данных o ссылку с именем save, но я вижу одну с именем You violate your own speed limit with, которую можно использовать в вашей ссылке, чтобы иметь возможность получать данные из базы данных.Чтобы решить эту проблему, используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("You violate your own speed limit with");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ArrayList<String> violations = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String speed = ds.getValue(String.class);
            violations.add(speed);
            Log.d(TAG, speed);
        }

        //Do what you need to do with y our violations list
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
ref.addListenerForSingleValueEvent(valueEventListener);

Результатом в вашем logcat будут все эти значения:

3 km / h at time: ...
3 km / h at time: ...
//an so on
0 голосов
/ 20 сентября 2018

Попробуйте использовать addListenerForSingleValue() вместо addValueEventListener().Надеюсь, поможет.И измените свою ссылку на Firebase save на you violate your own speed limit with

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