2017-07-04 1 views
0

FirebaseRecyclerAdapterに、電子メールアドレスとshow uidで終わる招待があるかどうかを確認します。まるでフィルタリングと注文がないかのように、何とかすべてのデータを出力します。FirebaseRecyclerAdapterにはまだすべてのアイテムが表示されています。表示しないでください

ここにjsonデータがあります。

"invites" : { 
    "4u60kmvvO9TwzBrLpP5SG4ICU9r1_test5%[email protected]%2Etest" : { 
    "cost" : "2", 
    }, 
    "[email protected]%2Etest" : { 
    "costs" : "0" 
    }, 
    "UQW5VEAojMOyB2WGTU9aTPUBepg1_test6%[email protected]%2Etest" : { 
    "costs" : "0"  
    } 
} 

FirebaseRecyclerAdapterを設定します。ここにアダプターがあります。

なぜ私は[email protected]電子メールでテストすると3つのアイテムがすべて得られますか?私はドキュメンテーションを読んでいるようで、うまくいくはずです。何か案は?

更新

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

test @ test%2Etestを返します。

​​
+0

これは、 'encodeAsFirebaseKey(email)'が返す値に依存します。その呼び出しの代わりにハードコードされた値で問題を再現できますか? –

+0

test @ test%2Etestを返します。うまくいくはずです。 – EagerToSing

答えて

0

endAt()の仕組みを混乱させるようです。渡す引数で始まる文字列で終わるすべての文字列に一致します。 ではなく、と一致する文字列は、渡す引数で終わります。

のでendAt("[email protected]%2Etest")試合:

"4u60kmvvO9TwzBrLpP5SG4ICU9r1_test5%[email protected]%2Etest" : { 
    "cost" : "2", 
}, 
"[email protected]%2Etest" : { 
    "costs" : "0" 
}, 

しかしendAt("[email protected]%2Etest")何も返さない、何のキーはそれで起動しませんので。

+0

子どもがフィルタリングできるようにデータ構造を変更する必要があるようです。これは、キーの一部として、そして子供として、電子メールを二重に使用する原因となります。 – EagerToSing

関連する問題