我在我的项目中使用Database Firebase。我对onChildAdded感到困惑。我有这样的代码:

mEventListener = new ChildEventListener() {
              @Override public void onChildAdded(@NonNull DataSnapshot dataSnapshot,
                @Nullable String stringS) {
   if (stringS != null
       && dataSnapshot.getKey()
      != null && !dataSnapshot.getKey().contains(stringS))
    {
     Log.e("=====", "onChildAdded: " + stringS +
           " getKey: " + dataSnapshot.getKey());
    }....



我在这里得到日志:



  =====:onChildAdded:-LMsqXJTn5DoMZTELzuz getKey:
  -LMsqXJVyXWZKqDizrCt



那么这个“ dataSnapshot”的关键是什么?


android - Firebase onChildAdded响应中的名称值是什么?-LMLPHP


在其他情况下,我也得到了相反的结果,这使我感到非常困惑。


添加:


其他一些DataSnapshot,它们都是相同的。

最佳答案

onChildAdded得到两个参数:


刚刚添加的DataSnapshot
前一个子项的密钥,之后添加了此新数据快照


因此,在您的示例中,新快照具有键-LMsqXJVyXWZKqDizrCt,并且已将其添加到-LMsqXJTn5DoMZTELzuz之后。

另请参见reference documentation for onChildAdded


  public abstract void onChildAdded (DataSnapshot snapshot, String previousChildName)
  
  将新的孩子添加到此侦听器添加到的位置时,将触发此方法。
  
  参量
  
  snapshot-新的子位置的数据的不变快照
  
  previousChildName-在新子项之前订购的同级位置的键名。对于位置的第一个子节点,该值为null。

08-18 01:00