我正在尝试获取我的“历史”节点中当前“乘车”的“状态”,但首先我必须获取“rideKey”。
全局变量:String rideKey,String key。
历史节点:
{
"History" : {
"-LGXaukR30LTjrL3ZNpt" : {
"driver" : "ptnVOKounjXE9VrmZCCvKoZWluf1",
"rating" : 0,
"ridePrice" : 5.25,
"rider" : "C0RjB5NPZcTvWz9XiUAhpTDOK0C2",
"status" : "accepted",
"timestamp" : 1530662726
}
}
}
DatabaseReference keyRef = FirebaseDatabase.getInstance().getReference("History");
keyRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
rideKey = String.valueOf(mDatabase.child("History").push().getKey());
Log.d(TAG, "getKey: key = " + rideKey);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
这个代码给我返回了History中的所有键,如何获取最近的一个键呢?
现在,我还需要获取请求的“状态”。
但是,当我尝试获取状态时,它一直返回 null。
我已经尝试在rideKey值事件内部放置另一个ValueEventListener,但仍然为 null。
有什么想法,我做错了什么吗? 非常感谢。
编辑
Log.e(TAG, "I made it to getKeyAndStatus");
DatabaseReference keyRef = FirebaseDatabase.getInstance().getReference("History");
keyRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
**// Log.e(TAG, "I made it to getKeyAndStatus: onDataChange");**
Iterable<DataSnapshot> children = dataSnapshot.child("History").getChildren();
for (DataSnapshot child : children){
Log.d(TAG, "getKey: key = " + child.getKey());
Ride ride = child.getValue(Ride.class);
Log.e(TAG, "ride = " + ride);
Log.d(TAG, "Driver = " + ride.getDriver());
Log.d(TAG, "Rating = " + ride.getRating());
Log.d(TAG, "Rider = " + ride.getRider());
Log.d(TAG, "Price = " + ride.getRidePrice());
Log.d(TAG, "status = " + ride.getStatus());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
上述代码只能执行到日志“我已经到达getKeyAndStatus:onDataChange”。
编辑-结果
点击
![results](https://istack.dev59.com/dGybC.webp)
"-LGXaukR30LTjrL3ZNpt"
- Ticherhaz FreePalestine