2016-08-19 17 views
2

firebaseデータベースからaddValueEventListenerを使用してデータのリストを取得しています。データを取得するためにgetValueを呼び出すことができますが、直接それが今 をArrayListに変換することができ、私はこのDataSnapshotからデータをコレクションリストに変換する方法FirebaseDatabase

public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot matchSnapShot: dataSnapshot.getChildren()) { 
     Match match = matchSnapShot.getValue(Match.class); 
     matchList.add(match); 
    } 
    Object obj= dataSnapshot.getValue(); 
    Toast.makeText(NewMatchActivity.this,"got data",Toast.LENGTH_LONG).show(); 
} 

のようにやっているが、私はこの

ArrayList<Match> matchList = dataSnapshot.getValue(ArrayList<Match.class>); 
+0

あなたの問題を解決しましたか? – marson

答えて

1

のようないくつかの事はそれはあなたの正確なデータ構造上のビット(の表現スニペットに依存しますテキストとしてのJSONが役に立ちますそのために)、あなたが戻ってくるデータは、おそらくMapでありListではないでしょう。

public void onDataChange(DataSnapshot dataSnapshot) { 
    Map<String,Match> map = (Map<String, Match>) dataSnapshot.getValue(); 
    Collection<Match> matches = map.values(); 
} 
+0

私はこれを試しますが、MatchクラスのコレクションではなくHashMapのコレクションです。 –

+0

これは何とか解決しましたか? – marson

0

これを試してみてください:

GenericTypeIndicator<List<Match>> t = new GenericTypeIndicator<List<Match>>(){}; 
List<Match> matchList = dataSnapshot.getValue(t); 
+1

私はこの例外を受け取りました "デシリアライズ中にリストを期待しましたが、java.util.HashMapクラスを持っています" –

関連する問題