3

firebase UI を使用してリスト ビューに firebase アダプタを入力しようとすると、これらのエラーが発生します

com.google.firebase.database.DatabaseException: タイプ java.util.HashMap の値を文字列に変換できませんでした

ここにコードがあります

     DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
     DatabaseReference a = ref.child("info");

        final FirebaseListAdapter<String> adapter =
              new FirebaseListAdapter<String>(this,String.class,android.R.layout.simple_list_item_1,a) {
                  @Override
                  protected void populateView(View v, String model, int position) {

                      TextView text = (TextView) findViewById(android.R.id.text1);
                      text.setText(model);

                  }

これはjsonデータの例です

 "info" : {
   "KSTUJILdwPN305Fs7ujhga4knlG3" : {
     "File Info" : {
       "-JFRkA855rfOU7GtcK4" : {
         "Name" : "John",
         "Adress" : "Test Adress",
         "Favourite_food" : "Bread",
       },
4

2 に答える 2

4

info ノードはデータ モデルを参照しません。子ノードが含まれる場合があります。したがって、モデルに到達するには、このような参照を使用する必要があります。

 DatabaseReference a = ref.child("info").child(info_id).child("File Info").child(file_id); 

そして、使用する String モデルの代わりに FileInfo モデルが必要です

populateView(View v, FileInfo model, int position):

とモデル

public class FileInfo {

private String Name;
private String Adress;
private String Favourite_food;

public FileInfo() {
}

public FileInfo(String Name, String Adress, String Favourite_food) {
    this.Name = Name;
    this.Adress = Adress;
    this.Favourite_food = Favourite_food;
}

public String getName() {
    return Name;
}

public void setName(String Name) {
    this.Name = Name;
}

public String getAdress() {
    return Adress;
}

public void setAdress(String Adress) {
    this.Adress = Adress;
}

public String getFavourite_food() {
    return Favourite_food;
}

public void setFavourite_food(String Favourite_food) {
    this.Favourite_food = Favourite_food;
}

}
于 2016-07-10T01:54:46.467 に答える
0
final FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(this,String.class,android.R.layout.simple_list_item_1,a)

public FirebaseListAdapter(Activity activity,
               java.lang.Class<T> modelClass,
               int modelLayout,
               com.firebase.client.Firebase ref)

modelClass - Firebase は、ある場所のデータを、指定したクラスのインスタンスにマーシャリングします

コンストラクターの 2 番目のパラメーター (String.class) を、info (name、address、favouriteFood) のフィールドを持つ POJO に置き換えます。

FirebaseListAdapter

編集:

populateViewメソッドでも getter を使用する必要があります。

于 2016-07-10T01:54:40.107 に答える