2016-11-22 4 views
0

私はFirebaseを使用しています。私はデータを取得するためにいくつかのクエリを実行していますし、addChildEventListenerを使用しています。私もaddValueEventListenerを試してみました。 dataSnapshot.getValue()の応答はHashMapです。クラスFirebaseクエリハッシュマップ

最初のケースのHashMapの各キーは、私のクラスのフィールドを表しています。

HashMapをクラス\ modelに変換する方法はありますか?それとも、私が持っているクラスごとにカスタムをしなければならないのですか?

dataSnapshot.getValue(Trip.class);を使用できることがわかりましたが、DataseExceptionがスローされます。

私のリフレクションの経験はほとんどありませんが、理論的には私はそれを使うことができますが、どうすればよいか分かります。

ありがとうございました。 (デバッグ中)(それを表示するにはもちろん、それのすべてではない)

EDIT 旅行モデルは、例えば

public class Trip implements Model 
{ 
    private String ID; 
    private String driverID; 

    private LatLng addressFrom; 
    private LatLng addressTo; 

    private List<LatLng> locationList; 

    private boolean isActive; 
} 

HashMap応答は次のよう

result = {[email protected]} size = 14 
0 = {[email protected]} "fullAddress" -> "this is the address" 
1 = {[email protected]} "addressFrom" -> " size = 2" 
2 = {[email protected]32} "state" -> "0" 
3 = {[email protected]} "distanceMeter" -> "706" 
4 = {[email protected]} "id" -> "-KX5Ihn7E_g8HEmsXXL3" 
5 = {[email protected]} "duration" -> "157" 
6 = {[email protected]} "timeMilliSeconds" -> "1479722067649" 
7 = {[email protected]} "driverID" -> "RZZplHcojGWRoJdRH2SOswQvSBO2" 
8 = {[email protected]} "addressTo" -> " size = 2" 
9 = {[email protected]} "locationList" -> " size = 3" 
10 = {[email protected]} "length" -> "706" 
11 = {[email protected]} "active" -> "false" 
12 = {[email protected]} "passengerCount" -> "1" 
13 = {[email protected]} "endAddressText" -> "this is the end address text" 

EDIT 2であります(getValue(Trip.lassからの例外)

com.google.firebase.database.DatabaseException:クラスcom.google.android.gms.maps.model.LatLngは、引数なしのコンストラクタが欠落している

+0

クラスモデルと応答ハッシュマップを投稿できますか? – rhari

+0

@rhari編集を確認してください –

+0

dataSnapshot.getValue(Trip.class)を使用しているときにlogcatの例外を通知することもできます。 ? – rhari

答えて

2

私は、エラーが原因でいくつかのクラスのように発生していると思いますLatLngはFirebaseに直接格納することはできません。 googleでthis sample appを見ると、位置データがFirebaseに送られると、LatLngクラスの代わりにgetLatitude()とgetLongitude()の値が使用されます。したがって、LatからLongのList of HashMapsのようなものを使用してロケーションデータを格納する場合は、dataSnapshot.getValue(Trip.class)を使用して解析することができます。

+0

を追加しました。私の問題だったようですが、私は 'LatLng'に似た別のクラスを作成しましたが、パラメータのないコンストラクタを使って、それを使用しました。今それは動作します。 –

関連する問題