2017-06-07 4 views
0

は、私は私のデータクラスオブジェクトのリストをfirebaseに書き込むにはどうしたらいいですか? 、

@IgnoreExtraProperties 
public class Data{ 
    public String desc; 
    public double id; 
    public data(String desc,double id) { 
     this.id=id; 
     this.desc=desc; 
    } 
} 

、Firebaseで一度に複数のノードを記述しようとしていますそして、私はこの

.....//firebase auth ok 

    ArrayList<Data> mydata= new ArrayList<>(); 
    mydata.add(new Items("data1",1)); 
    mydata.add(new Items("data2",2));        
    mDatabase.child("DATA").setValue(mydata); 

をしようとしています。しかしfirebaseは私が推測するListarrayをサポートしていないので、これは失敗しましたクラスandroid.support.v4.app.LoaderManで見つけ シリアル化するためにはプロパティ:私はエラーに

com.google.firebase.database.DatabaseExceptionを取得していてagerImpl

答えて

0

私は問題はあなたが直接ルートレベルで値を設定していると思います。 ルートノード内に別の子を作成してみてください。

List<Data> mydata= new ArrayList<>(); 
mydata.add(new Data("data1",1)); 
mydata.add(new Data("data2",2));        
mDatabase.child("DATA").child("CHILD NAME").setValue(mydata); 
+0

私は実際に上記のコードを単純化し、既に持っている余分なノードを削除したので、これは当てはまりません。 –

+0

これは私がやっていることであり、それはうまく動作しています。ここでtripCollectionはArrayList mFirebaseDatabaseReference.child(Const.USER_TRIPS).child(uuid).child(tripCollection.getPnr())。setValue(tripCollection); –

+0

あなたのtripCollectionはArrayListですか? –

0

モデルのSIの間違ったからすべてあなたのコンストラクタの第一は、データの代わりにDataする必要があります。 Mapの代わりにListを使用しているため、このようなエラーが発生しています。あなたはすべての新しいオブジェクトに対しても異なるキーを持っています。このように

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference pushedKey = mDatabase.child("DATA").push(); 
Data data = new Data("data1", 1));        
pushedKey.setValue(data); 

ArrayList<Data> mydata= new ArrayList<>(); 
mydata.add(new Items("data1",1)); 
mydata.add(new Items("data2",2));        
mDatabase.child("DATA").setValue(mydata); 

:コードのこの行を変更します。

希望します。

関連する問題