FirebaseRecyclerAdapter仍显示所有项目。不应该显示任何

时间:2017-07-04 22:46:43

标签: android firebase firebase-realtime-database firebaseui

我希望FirebaseRecyclerAdapter检查是否有邀请以电子邮件地址结尾,并显示uids。它以某种方式输出所有数据,好像没有过滤和排序。

这是json数据。

https://www.portal.example.net/apple-app-site-association

我想设置FirebaseRecyclerAdapter。这是适配器。

"invites" : {
  "4u60kmvvO9TwzBrLpP5SG4ICU9r1_test5%2E@test%2Etest" : {
    "cost" : "2",
  },
  "4u60kmvvO9TwzBrLpP5SG4ICU9r1_test4@test%2Etest" : {
    "costs" : "0"
  },
  "UQW5VEAojMOyB2WGTU9aTPUBepg1_test6%2E@test%2Etest" : {
    "costs" : "0"      
  }
}

为什么我在使用test@test.test电子邮件进行测试时获得所有这三项内容?我似乎已经阅读了文档,它应该可以工作。有什么想法吗?

更新即可。

 mAdapter = new FirebaseRecyclerAdapter<Event, UserHolder>(
      Event.class, 
      R.layout.layout, 
      UserHolder.class, 
      ref.child("invites").orderByKey().endAt(encodeAsFirebaseKey(email))
 ) {}

返回test @ test%2Etest。

 private String encodeAsFirebaseKey(String string) {
    return string.replace(".", "%2E");
}

1 个答案:

答案 0 :(得分:0)

您似乎对endAt()的工作方式感到困惑。它匹配所有字符串,以您传递的参数开头的字符串结尾。 匹配以您传递的参数结尾的字符串。

所以endAt("4u60kmvvO9TwzBrLpP5SG4ICU9r1_test4@test%2Etest")匹配:

"4u60kmvvO9TwzBrLpP5SG4ICU9r1_test5%2E@test%2Etest" : {
  "cost" : "2",
},
"4u60kmvvO9TwzBrLpP5SG4ICU9r1_test4@test%2Etest" : {
  "costs" : "0"
},

但是endAt("test@test%2Etest")没有返回任何内容,因为没有密钥从那开始。