2017-05-06 7 views
0

dataSnapshotからフィールド値を抽出できません。ここでFirebaseのChildEventListener()から取得したDatasnapShotの内容を読む問題

コードです:ここでは

ChildEventListener userListener = new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     Log.d(TAG,"users count:"+dataSnapshot.getChildrenCount()+" users"); 

     for(DataSnapshot receivedSnapshot:dataSnapshot.getChildren()) { 
      Log.d(TAG,"received Snapshot"+receivedSnapshot); 
      Toast.makeText(getBaseContext(),"received Snapshot"+receivedSnapshot,Toast.LENGTH_LONG).show(); 
      Person person = receivedSnapshot.getValue(Person.class)// Getting the error for this line. 

      Log.i(TAG,"receivedSnapshot:"+person.toString()); 

     } 
    } 

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

    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}; 

dataBase = FirebaseDatabase.getInstance(); 
DatabaseReference userTable = dataBase.getReference("users"); 
userTable.addChildEventListener(userListener); 

がlogcatです:

Process: com.example.raghavkishan.wealthmanagement, PID: 23843 
Theme: themes:{default=overlay:system, iconPack:website.leifs.delta, fontPkg:system, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system} 
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.raghavkishan.wealthmanagement.Person 

マイ者クラス:

private String personName; 
private String personEmail; 
private int phoneNumber; 
private String dateOfBirth; 
private String city; 
private String state; 
private String country; 
private String groupId; 

public Person(String personName,String personEmail,int phoneNumber,String dateOfBirth,String city,String state,String country,String groupId){ 
    this.personName = personName; 
    this.personEmail = personEmail; 
    this.phoneNumber = phoneNumber; 
    this.dateOfBirth = dateOfBirth; 
    this.city = city; 
    this.state = state; 
    this.country = country; 
    this.groupId = groupId; 

}[![enter image description here][1]][1] 

画像は、データベースの構造が含まれています。ユーザーのUIDがノードのキーです。

enter image description here

私はfirebaseデータベースにデータを投稿するPersonクラスのオブジェクトを使用しています。しかし、私は上記のエラーに遭遇しているそれを取得しながら。

1)私は間違いがありますか?

2)代替方法はありますか?

+0

Personクラス定義とFirebaseノード –

+0

を投稿してください。データベース構造とあなたのpojoを追加してください。 –

+0

@SushobhNadiger投稿者クラスとデータベース構造を持つ投稿を更新しました –

答えて

1

DatabaseReferenceが間違っています。

DatabaseReference userTable = dataBase.getReference("users").child(userId); 

問題は、あなたが子供を欠けているということである、userId子供と

DatabaseReference userTable = dataBase.getReference("users"); 

:あなたは、この行を変更する必要があります。 userIdは、push()メソッドによって生成される一意のIDです。

希望します。

関連する問題