Как определить, где новый дочерний элемент добавлен в указанный узел? - PullRequest
0 голосов
/ 22 сентября 2019

В настоящее время я создаю приложение чата, в котором я хочу создавать уведомления самостоятельно, а не FCM.Это мои данные json

{
  "Message": {
    "SenderUID": {
      "CurrentUID": {
        "message_push_id": {
          "name": "abcd",
          "from": "abcd",
          "time": "abcd",
          "status": "abcd"
        },
        "message_push_id1": {
          "name": "abcd",
          "from": "abcd",
          "time": "abcd",
          "status": "abcd"
        },
        "message_push_id2": {
          "name": "abcd",
          "from": "abcd",
          "time": "abcd",
          "status": "abcd"
        }
      }
    }
  },
  "SenderUID2": {},
  "CurrentUID": {
    "message_push_id3": {
      "name": "abcd",
      "from": "abcd",
      "time": "abcd",
      "status": "abcd"
    },
    "message_push_id4": {
      "name": "abcd",
      "from": "abcd",
      "time": "abcd",
      "status": "abcd"
    },
    "message_push_id5": {
      "name": "abcd",
      "from": "abcd",
      "time": "abcd",
      "status": "abcd"
    }
  }
}

В этой структуре json "message_push_id" генерируется каждый раз, когда появляется новое сообщение. Поэтому я хочу получить подробную информацию о новом сообщении (дочернем) из узла сообщений

Для этого я использовал следующие коды

     Messageref.addValueEventListener(new ValueEventListener() {
           @Override
           public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot uid: dataSnapshot.getchildren()) {
             String senderUIDKey = dataSnapshot.getKey();
             if (!senderUIDKey.equal(currentuid)) {
              Messageref.child(senderUIDKey).child(currentuid).addChildEventListener(childEventListener) = new ChildEventListener() {
               @Override
               public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
                String pushkey= dataSnapshot.getKey());

                Messsage messages = dataSnapshot.getValue(Messsage.class);
                //Here i also used single value event listener of location //
Messageref.child(currentuid).child(senderUIDKey).child(pushkey)//for Main operation//
               }
              }
             }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
             System.out.println("The read failed: " + databaseError.getCode());
            }
           });

Вместо этого кода Возможно ли получить детали сообщения напрямую? Здесь я пытаюсь получить новые добавленные дочерние детали.Для этого я использовал addValueEventListener для получения senderUIDKey в Messageref.2. И после получения senderUID из ValueEventListener я использовал ChildEventListener для получения нового дочернего элемента и его ключа.

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