Не удается получить данные из Firebase с помощью ValueEventListener - PullRequest
2 голосов
/ 28 мая 2019

This is my database tree

Я пытаюсь извлечь данные из базы данных и показать их в действии. Данные извлекаются из базы данных с родителем, который соответствует ранее нажатой позиции RecyclerView. Когда данные извлекаются с использованием ValueEventListener, это показывает, что переменные имеют значение null.

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

public void changeData(){
    final Intent intent = getIntent();
    Log.v("Locationsdsa", intent.getStringExtra("EXTRA_LOCATION"));
    Log.v("LocationsdsaLOLOL", intent.getStringExtra("EXTRA_POSITION"));
    DatabaseReference db = FirebaseDatabase.getInstance().getReference("Data");
    db.child(intent.getStringExtra("EXTRA_LOCATION")).child(intent.getStringExtra("EXTRA_POSITION")).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            placeName = dataSnapshot.child("nameResto").getValue(String.class);
            String restoAddress = dataSnapshot.child("restoAddress").getValue(String.class);
            String restoReview = dataSnapshot.child("restoReviews").getValue(String.class);
            String imgUrl = dataSnapshot.child("restoThumbnail").getValue(String.class);
            langitude = dataSnapshot.child("restoLangitude").getValue(Double.class);
            longitude = dataSnapshot.child("restoLongitude").getValue(Double.class);

            Log.v("langitude", String.valueOf(langitude));
            Log.v("longitude", String.valueOf(longitude));
            Log.v("name", placeName);
            Log.v("restoaddress", restoAddress);
            Log.v("reviewresto", restoReview);
            tvPlace.setText(placeName);
            tvAddress.setText(restoAddress);
            tvRating.setText(restoReview);
            Picasso.get().load(imgUrl).resize(200, 200).centerInside().into(ivPlace);


        }

Я ожидаю, что данные могут быть получены с помощью ValueEventListener

1 Ответ

1 голос
/ 28 мая 2019

Вот некоторые вещи, которые пользователи часто упускают:

  • Правила Firebase отсутствуют, по умолчанию блокируется

  • Забыл скачать google-services.json

  • орфографическая ошибка в именах ключей и код

  • маршал Java pojo имеет неправильное объявление метода или отсутствует метод set

Еще одна вещь, которую часто упускают из виду, это то, что если Offline Capabilities включен, например:

FirebaseDatabase.getInstance () setPersistenceEnabled (истина);.

При отладке приложения можно забыть, что данные, измененные в Firebase, должны быть переданы на устройство, прежде чем устройство сможет отреагировать на изменение. Казалось бы, это происходит, но если интернет ненадежный или другие интернет-штучки, могут случиться странные вещи, о которых вы сразу не узнаете

Вот так Оффлайновые возможности Firebase, вызывающие проблемы с памятью ответ от @AlexMamo, и обсуждение показывает ..

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

При разработке можно по ошибке посмотреть не ту базу данных в консоли Firestore, скажем, у вашего приложения есть версия для разработчика и рабочая версия, к небольшому количеству кофе, и можно посмотреть на неправильные вещи

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