2016-12-22 1 views
1

Ich bin sehr neu in Firebase. Also habe ich eine Datenbankstruktur wie folgt aus:Wie liest man Kinder aus einer Firebase-Datenbank mit FirebaseListAdapter in Java?

enter image description here

und wollen diese erzeugten IDs in eine Listenansicht angezeigt werden soll. Ich verwende FirebaseListAdapter. Hier ist mein Code:

databaseReference = FirebaseDatabase.getInstance().getReference().child("Firebase").child("Users"); 
    firebaseListAdapter = new FirebaseListAdapter<String>(this, String.class, android.R.layout.simple_list_item_1, databaseReference) { 
     @Override 
     protected void populateView(View v, String string, int position) { 
      TextView textView = (TextView) v.findViewById(android.R.id.text1); 
      textView.setText(string); 
     } 
    }; 
    listView = (ListView) findViewById(R.id.listView); 
    listView.setAdapter(firebaseListAdapter); 

Das ist meine Benutzerklasse:

class User { 
private String userName; 
private String email; 

    void setUserName(String userName) {this.userName = userName;} 
    String getUserName() {return userName;} 

    void setEmail(String email) {this.email = email;} 
    String getEmail() {return email;} 
} 

Wenn ich diese Copile, bekomme ich diesen Fehler: com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String

Wie kann ich dieses Problem beheben?

Vielen Dank im Voraus!

+0

Sie müssen zeigen, was in diesem Benutzerobjekt ist. – Wilik

+0

Wie kann ich das tun? Ich habe gerade die Benutzerklasse hinzugefügt. Aber denken Sie daran, ich brauche nur diese IDs in meiner Listenansicht. Vielen Dank! –

Antwort

1

die populateView Methode ändern Implementierung

firebaseListAdapter = new FirebaseListAdapter<User>(this, User.class, android.R.layout.simple_list_item_1, databaseReference) { 
    @Override 
    protected void populateView(View v, User user, int position) { 
     TextView textView = (TextView) v.findViewById(android.R.id.text1); 
     String userKey = this.getRef(position).getKey(); 
     textView.setText(userKey); 
    } 
}; 
+0

Danke, aber ich möchte nicht in meinem Listenansicht den Benutzernamen anzeigen. Ich möchte anzeigen, was innerhalb des Benutzerobjekts ist, diese IDs. –

+0

@ AlexM.Ich habe meine Antwort aktualisiert – Wilik

+0

Ich versuchte dies, aber ich bekomme den gleichen Fehler: 'com.google.firebase.database.DatabaseException: Fehler beim Konvertieren von Wert des Typs java.util.HashMap in String' Haben Sie andere Idee? Danke –

0

Sie einen benötigen FirebaseListAdapter<Map> statt FirebaseListAdapter<String>. Ihr Code würde so etwas werden (kompilieren Sie es nicht, das liegt an Ihnen ;-)

databaseReference = FirebaseDatabase.getInstance().getReference().child("Firebase").child("Users"); 
firebaseListAdapter = new FirebaseListAdapter<Map>(this, Map.class, android.R.layout.simple_list_item_1, databaseReference) { 
    @Override 
    protected void populateView(View v, Map users, int position) { 
     TextView textView = (TextView) v.findViewById(android.R.id.text1); 
     textView.setText(users.getKey()); 
    } 
}; 
listView = (ListView) findViewById(R.id.listView); 
listView.setAdapter(firebaseListAdapter); 
+0

Danke, aber ich möchte nicht in meinem Listenansicht den Benutzernamen anzeigen. Ich möchte anzeigen, was in dem Benutzerobjekt ist, diese ID –

+0

Aaaaah, ok, aktualisierte Antwort entsprechend – Niels

Verwandte Themen