2017-07-04 1 views
0

Je veux que FirebaseRecyclerAdapter vérifie s'il y a une invite se terminant par une adresse e-mail et affiche les uids. D'une manière ou d'une autre, il produit toutes les données, comme s'il n'y avait pas de filtrage et de commande.FirebaseRecyclerAdapter montrant toujours tous les éléments. Je ne veux pas afficher

Voici les données json.

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

Je souhaite définir FirebaseRecyclerAdapter. Voici l'adaptateur. Pourquoi est-ce que je reçois tous les trois articles, quand je fais des essais avec l'email de [email protected]? Il semble que j'ai lu la documentation et cela devrait fonctionner. Des idées?

Mise à jour.

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

Il renvoie test @ test% 2Etest.

 protected void populateViewHolder(final UserHolder viewHolder, Event model, final int position) { 
    final String key = this.getRef(position).getKey().split("_")[0]; 
      viewHolder.setName(key);  
      } 
+0

Cela dépend de la valeur renvoyée par 'encodeAsFirebaseKey (email)'. Pouvez-vous reproduire le problème avec une valeur codée en dur au lieu de cet appel? –

+0

Il renvoie test @ test% 2Etest. Devrait marcher. – EagerToSing

Répondre

0

Vous semblez confondre le fonctionnement de endAt(). Il correspond à toutes les chaînes, se terminant à celle qui commence par l'argument que vous passez. Il fait pas les chaînes de match se terminant par l'argument que vous passez.

Ainsi endAt("[email protected]%2Etest") matches:

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

Mais endAt("[email protected]%2Etest") rien, parce que les retours sans clé commence avec ça.

+0

Il semble que la structure de données devrait être modifiée pour pouvoir filtrer par enfant. Cela est dû à la double utilisation du courrier électronique en tant que partie de la clé et en tant qu'enfant. – EagerToSing