私はOrder
ノードとその下にStatus
というキーを持っています。私はStatus
の値の変更を探しています。変更が検出された場合は、read
の親にOrder
ノードが必要です。サブノード値の変化を検出したときに親オブジェクトにアクセスする
重要な点は、Order
ノードの変更を聞きたくありません。しかし、Order
ノードの下のStatus
だけです。これを行う最も最適な方法は何ですか?他のリスナーの内部にリスナーを置くとよいですか?ここに私のコードは次のとおりです。
final Query qRef = FirebaseDatabase.getInstance().getReference().child("orders").orderByChild("customerId").equalTo(FirebaseAuth.getInstance().getCurrentUser().getUid())
.limitToFirst(1);
qRef.keepSynced(true);
final DatabaseReference reference = qRef.getRef().child("status");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DatabaseReference inner = reference.getParent();
inner.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot parent) {
if (parent != null) {
Order newOrder = parent.getValue(Order.class);
if (newOrder != null) {
if (newOrder.getStatus() != null && !newOrder.getStatus().equals("FX_OVER"))
processOrder(newOrder);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
とJSON:
{ "20161010210955" : {
"createdAt" : {
"date" : 10,
"day" : 1,
"hours" : 21,
"minutes" : 9,
"month" : 9,
"seconds" : 55,
"time" : 1476113995244,
"timezoneOffset" : -330,
"year" : 116
},
"customerId" : "npsd3Ldfsdf1x0hsdfsdf2mj14VUA876f2",
"id" : "20161010210955",
"status" : "FX_FULL"
} }
コードを正常に動作させるには、[問題を再現する最小コード](http://stackoverflow.com/help/mcve)を表示してください。この場合、JSONの小さなスニペット(テキストとして、スクリーンショットなし)も役立ちます。 –
ありがとうございます。質問に自分のコードを追加しました。 @FrankvanPuffelen – Vinod