2016-09-21 9 views
0

私はFirebase使用して、次のJSONを解析しようとしています:解析ID発行FirebaseRecyclerAdapter

ここ
{ 
      "organizations" : { 
      "-KS5bLCjQmNSQZDIQkTE" : { 
       "about" : { 
       "address" : "teka", 
       "city" : "sns", 
       "country" : "South Africa", 
       "created_at" : 1474358502482, 
       "name" : "diverse", 
       "pincode" : "167377", 
       "state" : "punjab", 
       "utc" : "2016-09-20 08:01:41" 
       }, 
       "department" : { 
       "-KS9LUpZWo5UqtWKJwJ8" : { 
        "address" : "best", 
        "name" : "test" 
       } 
       } 
      } 
      } 
    } 

は私のJavaコードです:

@IgnoreExtraProperties 
public class Organizations { 

    About about; 
    Department department; 

    public String getDepartment() { 
    return department; 
    } 

    public static class Department{ 
     public String address; 
     public String name; 

     public String getName() { 
     return name; 
     } 

    public String getAddress() { 
     return address; 
    } 

    } 

} 

FirebaseRecyclerAdapter

fbOrganizationRecycleAdapter = new FirebaseRecyclerAdapter<Organizations, OrganizationHolder> 
       (Organizations.class, R.layout.list_items_orgnization,OrganizationHolder.class,lastFifty) 
       { 
        @Override 
        protected void populateViewHolder(OrganizationHolder viewHolder, final Organizations model, int position) { 
         Log.e(TAG, "test " + model.getDepartment().getName()); 
        } 
       }; 

すべては除いて罰金を解析していますDepartmentmodel.getDepartment().getName();を取得しようとすると、私にnull departmentが返されます。

データは、以下のJSONのようなものであるならば、それは正常に動作します:

{ 
      "organizations" : { 
      "-KS5bLCjQmNSQZDIQkTE" : { 
       "about" : { 
       "address" : "teka", 
       "city" : "sns", 
       "country" : "South Africa", 
       "created_at" : 1474358502482, 
       "name" : "diverse", 
       "pincode" : "167377", 
       "state" : "punjab", 
       "utc" : "2016-09-20 08:01:41" 
       }, 
       "department" : { 

        "address" : "best", 
        "name" : "test" 

       } 
      } 
      } 
    } 

私は問題がIDであると思います。私は、次のJSONからID "-KS9LUpZWo5UqtWKJwJ8"を解析する方法を教えてください:

"department" : { 
      "-KS9LUpZWo5UqtWKJwJ8" : { 
       "address" : "best", 
       "name" : "test" 
      } 
      } 
+0

最小のコードを入力してくださいt問題を再現します。今のところ、 'Department'クラスの外観や実際にデータを読む方法(何らかのリスナーやアダプタのリファレンスを設定する方法)はわかりません。 –

+0

'JsonDeserializer'または' TypeAdapterFactory'を書いて、あなた自身でそれを解析することができます。ここにJesse Wilson(Gson投稿者)の素敵な例があります。あなたのお返事ありがとうございます。http://stackoverflow.com/a/11272452/1726166 – ytRino

答えて

1

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

class DepartmentChild{ 
    public String address; 
    public String name; 

    public String getName(){ 
     return this.name; 
    } 
} 

public class Organizations { 
    public About about; 
    public Map<String,DepartmentChild> department; 

    public Map<String, DepartmentChild> getDepartment() { 
    return department; 
    } 

    public void setDepartment(Map<String, DepartmentChild> department){ 
    this.department = department; 
    } 
} 

void test(Organizations model){ 
    for (Map.Entry<String, DepartmentChild > entry : model. getDepartment().entrySet()) { 
     Log.e(TAG, "test " + entry.getKey()+ "/" + entry.getValue().getName()); 
    } 
} 

あなたはこのように地図を繰り返すことができます

for (Map.Entry<String, DepartmentChild> entry : department.entrySet()) 
{ 
    System.out.println(entry.getKey() + "/" + entry.getValue().getName()); 
} 
+0

部門objを使用して名前を取得する方法 –

+0

String name = department.getValue( " - KS9LUpZWo5UqtWKJwJ8")。name; –

+0

department.getValue Androidスタジオが私にgetValueメソッドを表示していません –

関連する問題