Intro: J'ai créé la base de données de mon application comme dans l'image ci-dessous.Android: Lire la clé du nœud enfant
Pour afficher les livres enregistrés de l'utilisateur que je suis en train de lire d'abord les clés des livres de l'utilisateur (situés dans user-books
répertoire) et enregistrer toutes les clés dans un ArrayList donc je ne peux plus tard la charge (de books
directory) les BookObjects correspondant à ces clés dans un fragment appelé MybooksFragment
.
Note: Je suis en train d'obtenir et afficher ces clés dans un ListView comme vous pouvez le voir ci-dessous: (pour être sûr que je reçois les clés correctement)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my_books, container, false);
final ListView booksIdListView = (ListView) view.findViewById(R.id.booksIdListView);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = database.getReference();
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String UID = user.getUid();
databaseReference.child("books").child(UID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> booksId = new ArrayList<String>();
for (DataSnapshot child: dataSnapshot.getChildren()) {
String userBookId = child.getKey();
booksId.add(userBookId);
}
ArrayAdapter<String> myBooksAdapter = new ArrayAdapter<String>(getActivity() ,
android.R.layout.simple_list_item_1 , booksId);
booksIdListView.setAdapter(myBooksAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Malheureusement le ListView reste vide (pas rempli avec des clés comme j'espérais). Qu'est-ce que je fais de mal?
Note: J'utilise ce modèle de base de données afin que je puisse esquiver les données en double
Essayez d'utiliser firebase listadapter pour remplir les noeuds –