Firebaseを単純なデータ構造で使用すると、ユニークな鍵を含むデータを読み込む方法がありません。私のデータを単純に構成されているユニークな鍵でFirebaseデータをAndroidで処理する
myRef.child("users").child(userID).child("favorites").child(key).setValue(newSite);
:
Users
- UserID
- Favorites
- KEY : VALUE
私は次のように私のデータを見ることができていて
String key = myRef.child("users").push().getKey();
と私のデータを追加するには、正常に動作します:キーを使用して生成されますso showData(dataSnapshot):
for(DataSnapshot ds : dataSnapshot.getChildren()){
String data = ds.child(userID).child("favorites").getValue().toString();
Log.v("DATA", "DATA: " + data);
}
データが返されます。たとえば、{-L-DpQQCX8GYKPWclOX4=test}
です。返されるオブジェクトを反復処理しますか?またはFirebaseでこれを間違っていて、何とか各値を取得する必要がありますか?これに関する文書がある場合は、リンクを共有してください。私はランダムキーのためにそれを見つけるつもりはありません。
EDIT :::
私のリスナーがある:
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
showData(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
私はオブジェクトを解析することにより、鍵データを見ることができた:
JSONObject json = null;
try {
json = new JSONObject(data);
} catch (JSONException e) {
e.printStackTrace();
}
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
Log.e("KEY",key);
array.add(key);
}
リスナーを接続するコードを含めるように質問を更新してください。リスナーを取得すると、取得するスナップショットのタイプが決まるためです。 –