So come usare uno FirebaseRecyclerAdapter
in un elenco di elementi in Firebase. So anche come ottenere i dati Firebase da più posizioni utilizzando indici. Ma non so come combinarlo con un FirebaseRecyclerAdapter.Come utilizzare un FirebaseRecyclerAdapter con un riferimento dinamico in Android?
Ho una semplice struttura di dati in cui gli utenti possono essere amici:
"users": {
"user1": {
"name": "name",
"friends": {
"user2": "true"
}
}
"user2": {
"name": "name",
"friends": {
"user1": "true"
}
}
}
ho utilizzare gli ID univoci per i nomi utente. In questo semplice esempio, l'utente 1 e l'utente 2 sono amici. Quello che voglio fare è ottenere un elenco di tutti i nomi (e più tardi in seguito) usando un FirebaseRecyclerAdapter. Normalmente, otterrei una lista ottenendo l'ID utente sotto "amici" e quindi usando quegli ID per navigare verso i loro nomi. In Java, sarebbe simile a questa:
Firebase ref = new Firebase("<reference>");
ref.child("users/user1/friends").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String userId = snapshot.getKey();
ref.child("users/" + userId + "/name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
// Do something here
}
});
}
});
Ma quando si utilizza un FirebaseRecyclerAdapter, si ottiene solo di definire un URL. L'adattatore creerà un elenco in base agli elementi in quel singolo luogo.
C'è un modo per regolare l'adattatore in modo che legga i dati da più posti, nello stesso modo in cui l'esempio sopra fa? Oppure esiste un modo per creare una variabile di riferimento dinamico che punti solo agli ID utente che sono anche memorizzati nell'elenco "amici" dell'utente corrente? Stavo pensando di usare il metodo equals(), ma non riesco a capire come esattamente.
Un altro modo sarebbe memorizzare i nomi utente anche nell'elenco "amici". Ma ciò non migliorerebbe la struttura dei dati. Dovrei cambiare i nomi in due posti ogni volta (e forse le foto sono in seguito) e introdurrebbe più ridondanza.
Qualcuno ha una soluzione per questo problema? Non ho potuto trovare una risposta da nessuna parte, ma sembra un modello comune. E oltre a farlo funzionare, come lo faccio in modo efficiente?
di fronte a un problema dopo aver utilizzato il metodo che hai descritto in questa risposta ... per favore aiutaci con esso: http://stackoverflow.com/q/41921120/6144372 –
ho capito il problema che stava causando crash come dichiarato nella mia domanda precedente ... ho pubblicato un'altra domanda basata su quel problema. Si prega di prendere in considerazione: http://stackoverflow.com/q/41925181/6144372 Grazie! –