2016-12-22 5 views
1

私はFirebaseで非常に新しいです。だから、私はこのようなデータベースの構造を有する:FirebaseListAdapterをjavaで使用して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); 

これは私のUserクラスです:com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String

がどのように私はこの問題を解決することができます:私はこれをcopileとき

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

、私はこのエラーを取得しますか?

ありがとうございます!

+0

を;-)あなた次第ですなります。 – Wilik

+0

どうすればいいですか?私はUserクラスを追加しました。しかし、覚えておいて、私はリストビュー内のidだけ必要です。ありがとう! –

答えて

1

変更

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

ありがとうございますが、私はリストビューにユーザ名を表示したくありません。私はUserオブジェクトの中に何があるかを表示したい、それらのid。 –

+0

@ AlexM.私の回答を更新しました – Wilik

+0

私はこれを試しましたが、同じエラーが発生します: 'com.google.firebase.database.DatabaseException:型java.util.HashMapの値をStringに変換できませんでした'アイディア?ありがとう –

0

からpopulateViewメソッドの実装あなたが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

ありがとうございますが、私はリストビューにユーザ名を表示したくありません。私はUserオブジェクトの中に何を表示したいのですが、それらのidの –

+0

Aaaaah、ok、それに応じて更新された答え – Niels

関連する問題