2016-12-22 68 views
1

我是Firebase的新手。所以,我有一個數據庫結構是這樣的:如何使用java中的FirebaseListAdapter從Firebase數據庫讀取兒童?

enter image description here

,並希望顯示這些生成的ID的成列表視圖。我正在使用FirebaseListAdapter。這裏是我的代碼:

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); 

這是我的用戶等級:

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;} 
} 

當我copile此,我得到這個錯誤:com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String

我怎樣才能解決這個問題?

在此先感謝!

+0

你需要顯示那個用戶對象裏面的東西。 – Wilik

+0

我該怎麼做?我剛剛添加了用戶類。但請記住,我只需要這些id在我的listview中。謝謝! –

回答

1

populateView方法實現更改爲

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

謝謝,但我不想在我的listview顯示用戶名。我想要顯示User對象中的內容,即這些ID的內容。 –

+0

@ AlexM.I已更新我的答案 – Wilik

+0

我試過這個,但我得到了同樣的錯誤:'com.google.firebase.database.DatabaseException:未能將類型java.util.HashMap的值轉換爲字符串'你有任何其他理念?謝謝 –

0

你需要的FirebaseListAdapter<Map>代替FirebaseListAdapter<String>。你的代碼會變成這樣(雖然沒有編譯,這取決於你;-)

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

謝謝,但我不想在我的listview顯示用戶名。我想顯示User對象內的內容,這些ID的 –

+0

Aaaaah,好的,相應地更新了答案 – Niels