2016-11-20 3 views
0

Ich versuche, meine gridview mit HashMap zu füllen, aber ich bin mit diesem Problem konfrontiert:Populate Gridview Mit Firebase Mit HashMap

diesen Code unter Verwendung von Daten (Bücher info) von Feuerbasis zu erhalten und meine Gridview füllen ich eine bekommen leere Rasteransicht:

mDatabasee = FirebaseDatabase.getInstance().getReference(); 
    mDatabasee.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      for (DataSnapshot postSnapshot : snapshot.child("Items").getChildren()) { 

       Item person = postSnapshot.getValue(Item.class); 
       Log.d("picture",person.getBookImage()); 
       hm.put(postSnapshot.getKey().toString(),person.getBookImage()); 
       String number = String.valueOf(hm.size()); 
       Log.d("count",number); 

diese Log.d Zahl zurück: 1 genau wie ich

} 
      for(Map.Entry m:hm.entrySet()){ 
       System.out.println(m.getKey()+" "+m.getValue()); 

      } 

     } 

     public void onCancelled(DatabaseError firebaseError) { 
      System.out.println("The read failed: " + firebaseError.getMessage()); 
     } 
    }); 

    String number = String.valueOf(hm.size()); 
    Log.d("css css css",number); 
    gridView.setAdapter(new ImageAdapter(this, hm)); 

die letzte Log.d Rückkehr „CSS CSS CSS in Feuerbasis haben 0" so ist es normal, dass ich eine leere Rasteransicht bin empfangen, um sicherzustellen, dass ich hinzugefügt habe, manuell 1 Buch so der neue Code worden:

hm.put("-KWyZJM9GhhTe1PzuJMh","http://books.google.com/books/content?id=aJeTCgAAQBAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api"); 
    String number = String.valueOf(hm.size()); 
    Log.d("css css css",number); 
    gridView.setAdapter(new ImageAdapter(this, hm)); 
+0

nachdem ich war in der Lage zu füllen gridview manuell dieses Buch Hinzufügen –

Antwort

1

Sie müssen die Adapter von Änderungen in Kenntnis setzen.

adapter = new ImageAdapter(this, hm); // Stored as member variable 
gridView.setAdapter(adapter); 

innerhalb der Feuerbasis Methode, adapter.notifyDataSetChanged();

Verwandte Themen