2016-07-05 8 views
0

私のアプリのAndroid版にいくつか問題があります。私はiOS版を完成させ、Androidのデータ部分に取り組んでいます。私はスウィフトにスナップショットを取得した後、私は単にこのような何かを言うことができます。Firebaseスナップショット経由で読む - Android

myList.addObject((snapshot.value["num"] as? String)!) 

その後、私は私が必要な数字のの素敵なリストを持っています。

これまでのAndroidではこれほど簡単ではありません。ここで私のデータがどのように構造化され、私が探しているものです。

staffNUM 
    --staff 
     --12345677 
      -- num:112234 
     --2345689 
      -- num:090909 
     --44445677 
      -- num:999234 
     --6665689 
      -- num:888673 

iOS用アプリが既に使用されているため、データの作成方法を変更することはできません。ここで

は質問です:

私は働く私のデータベースへの参照を持っています。ここで

mDatabase = FirebaseDatabase.getInstance().getReference(); 

後、私は、データベースを呼び出しています方法です:スナップショットでの私の結果は

mDatabase.child("staffNUM/staff").addListenerForSingleValueEvent(
      new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if (dataSnapshot.getValue() != null) { 
        Log.d("Snap", "" + dataSnapshot.getValue()); 
        StaffNum staffNum = dataSnapshot.getValue(StaffNum.class); 
        } else { 
         // something else happens 
         } 

D /スナップ:{スタッフ= {12345677 = {NUM = 112234}、{2345689 = {NUM = 090909}、{2345689 = {NUM = 090909}、{44445677 = {NUM = 999234}、{6665689 = {NUM = 888673}}

そのデータを解析する最善の方法は何ですか?私はちょうど私がアプリで使用するためにスウィフトで行ったようなリストが必要です。

編集:

ここで私は( "NUM:"、 "" + staffNUM.num)Log.dを呼び出す場合、私は

@IgnoreExtraProperties 
public class StaffNum { 
     public String num 

     public StaffNUM() {} 

     public StaffNUM(String num) { 
     this.num = num; 
     } 
     @Exclude 
     public Map<String, Object> toMap() { 
     HashMap<String, Object> result = new HashMap<>(); 
     result.put("num", num); 
     return results; 
     } 
    } 

を追加したクラスです。 私はまだ

D/NUM ::

+0

から必要なフィールドを持つスタッフPOJOを作成します。パースします。あなたのデータと一致するPojoクラスを定義したら、この行 'Staff staff = snapshot.getValue(Staff.class);'を実行してください。参考 - https://www.firebase.com/docs/android/guide/retrieving-data.html – sha

+0

@sha最新の問題を更新しました。私はすでにあなたの答えを移植したが、私はそれを試して初めて動作しませんでした。他のアイデア? –

答えて

0

ヌルを取得し、あなたが持っているデータのためのPOJOを定義し、あなたのFirebase構造

@Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot d : dataSnapshot.getChildren()) { 
      Staff staff = d.getValue(Staff.class); 
      Log.d("Snap", "num: " + staff.getNum()); 
     } 
    } 
+0

ありがとう、私はゲッターを追加していませんでした。私はまだiOSで立ち往生しなければならない。 –

関連する問題