2016-12-13 18 views
0

DataSnapShotオブジェクトから取得した後にデータを印刷したいとします。それを印刷するために、私はこのようにしています。DatasnapshotオブジェクトからFirebase Androidのキーで値を取得

private void getUpdates(DataSnapshot DS){ 
    for(DataSnapshot mydata:DS.getChildren()){ 
    Log.i("", String.valueOf(data)); 
    } 
} 

firebaseインスタンスは次のようになります。

 FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     myRef = database.getReference("myDB"); 
     myRef.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       getUpdates(dataSnapshot); 
      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
       getUpdates(dataSnapshot); 
      } 

印刷など:私だけdescの値を取得したい

DataSnapshot { key = areaName, value = myName1} 
    DataSnapshot { key = decs, value = desc1} 
    DataSnapshot { key = areaName, value = myName2 } 
    DataSnapshot { key = desc, value = desc2 } 

しかし

マイ・モデル・クラスは次のとおりです。私は、このようにしてみました

public class Singleton { 
    private String areaName; 
    private String desc; 


    public Singleton(String areaName, String desc) { 
     this.areaName = areaName; 
     this.desc = desc; 
    } 

    public String getAreaName() { 
     return areaName; 
    } 

    public void setAreaName(String areaName) { 
     this.areaName = areaName; 
    } 

    public String getDesc() { 
     return desc; 
    } 

    public void setDesc(String desc) { 
     this.desc = desc; 
    } 



} 

。 java.langで:

String decsrip= (String) mydata.child("desc").getValue(); 
Log.i("", decsrip); 

しかし、それは

null 

を印刷している。そして、私は

Map<String, Object> map = (Map<String, Object>) mydata.getValue(); 
String descrip = (String) map.get("desc"); 
Log.i("",descrip); 

として

とjava.lang.ClassCastExceptionを言ってクラッシュしたアプリケーションを試してみました。文字列はjava.util.Mapにキャストできません

ここで、データは? descの値のみを取得できますか?あなたがする必要がある

+0

まず、DS.getChildren()の下にあるそのデータに使用したModelクラスを確認する必要があります。あなたが読んでいるレコードのDatabaseReferenceとModelクラスをどのように作成しているのか、問題のコードをもっと入れてください。 – MKJParekh

+0

@MKJParekh質問が更新されました。親切に見てください – user6750923

答えて

2

だけの事はあなたがまたあなたのSingletonモデルに空のコンストラクタを追加する必要が

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
myRef = database.getReference("myDB"); 
myRef.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     Singleton data = dataSnapshot.getValue(Singleton.class); 
     Log.i("", String.valueOf(data.getDesc())); 
    } 

    ... 
} 

ということです。

public class Singleton { 
    private String areaName; 
    private String desc; 

    public Singleton() { 
    } 

    public Singleton(String areaName, String desc) { 
    this.areaName = areaName; 
    this.desc = desc; 
    } 

    public String getAreaName() { 
    return areaName; 
    } 

    public void setAreaName(String areaName) { 
    this.areaName = areaName; 
    } 

    public String getDesc() { 
    return desc; 
    } 

    public void setDesc(String desc) { 
    this.desc = desc; 
    } 
} 
+0

この行 'シングルトンのデータ= dataSnapshot.getValue(Singleton.class);'は、このエラー 'com.google.firebase.database.DatabaseExceptionを与えています:クラスcom.example.fyp_awais.carparki_o.Singletonはコンストラクタがありません引数なしの場合 – user6750923

+0

シングルトンの空のコンストラクタを追加 –

+0

モデルクラスの空のコンストラクタ?? – user6750923

関連する問題