Получить список значений другого ребенка - PullRequest
0 голосов
/ 08 декабря 2018

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

Это мои данные о базе данных.

"Users" : {

    "X7aVfZH5oZbIaeyLm9FAjOSr5Gd2" : {
      "images" : {
        "urlImages1" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg1.jpg?alt=media&token=e26fd6a2-2be7-4a01-920e-0aed1fe06436",
        "urlImages2" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg2.jpg?alt=media&token=40165918-3b46-4b22-b0ef-255965b7855d",
        "urlImages3" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg3.jpg?alt=media&token=cfd7d00d-9b1a-44fd-80d4-a2947f7de743",
        "urlImages4" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg4.jpg?alt=media&token=995419a7-70f7-4330-b046-d06a4d54453e",
        "urlImages6" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg6.jpg?alt=media&token=ee6f566a-a9e5-4e8f-9d53-64d3f3bc97a6",
        "urlImages7" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg7.jpg?alt=media&token=883a3321-fbba-49bd-aae3-14b005b4cc5b"
      },
      "locations" : {
        "locations1" : "14.2830817 -89.7263953",
        "locations2" : "14.2661424 -89.7220017",
        "locations3" : "14.2846352 -89.7251991",
        "locations4" : "14.2684987 -89.7266704",
        "locations5" : "14.2684987 -89.7266704",
        "locations6" : "14.2684987 -89.7266704",
        "locations7" : "14.2684987 -89.7266704"
      }

Я хочучтобы получить данные из "изображений" и "местоположений".

    imageRef = database.getInstance().getReference("Users").child(userid);


    imageRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {


             for (DataSnapshot mData : dataSnapshot.getChildren()) {


                 String mImages = mData.child("images").getValue(String.class);
                 String mLocations  =  mData.child("locations").getValue(String.class);


                    ItemData itemData = new ItemData();
                    itemData.setImages(mImages);
                    itemData.setLocations(mLocations);

                    data.add(itemData);

            }

            adapter.notifyDataSetChanged();


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Я пытаюсь показать изображение и местоположение в окне повторного использования.Клавиша «images» содержит url1, url2, url3 ... таким же образом, как и клавиша «location», и я хочу показать их вместе в адаптере.

Пожалуйста, посмотрите на изображение ссылки

1 Ответ

0 голосов
/ 08 декабря 2018

Этот код используется для получения данных от images:

String mImages = mData.child("images").getValue(String.class);

Но если мы посмотрим на ваш JSON, свойство images будет выглядеть так:

  "images" : {
    "urlImages1" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg1.jpg?alt=media&token=e26fd6a2-2be7-4a01-920e-0aed1fe06436",
    "urlImages2" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg2.jpg?alt=media&token=40165918-3b46-4b22-b0ef-255965b7855d",
    "urlImages3" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg3.jpg?alt=media&token=cfd7d00d-9b1a-44fd-80d4-a2947f7de743",
    "urlImages4" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg4.jpg?alt=media&token=995419a7-70f7-4330-b046-d06a4d54453e",
    "urlImages6" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg6.jpg?alt=media&token=ee6f566a-a9e5-4e8f-9d53-64d3f3bc97a6",
    "urlImages7" : "https://firebasestorage.googleapis.com/v0/b/anthiefy.appspot.com/o/X7aVfZH5oZbIaeyLm9FAjOSr5Gd2%2FImages%2FImg7.jpg?alt=media&token=883a3321-fbba-49bd-aae3-14b005b4cc5b"
  },

Это целый объект JSON, а не просто строка.Таким образом, ваш вызов вернет null, поскольку значение не является строкой.

Чтобы получить все URL-адреса изображений из этого JSON, вам нужно будет перебрать его дочерние узлы и получить оттуда отдельные значения:

for (DataSnapshot imageSnapshot: mData.child("images").getChildren()) {
  System.out.println(imageSnapshot.getValue(String.class));
}

Поскольку может быть (и есть) несколько изображений и местоположений, либо ваш ItemData должен будет обрабатывать их, или вам нужно будет выбратьодно изображение и местоположение, или , вам нужно будет преобразовать все изображения / местоположения в одну строку.

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