是否可以单独检索下面数据库结构中的每个子项?例如,我想分别检索特定的用户ID(如0e2034ce-bdb0-4623-9f9e-84e302a78354
),以及属于该ID的名称,纬度和经度。下面列出的是我当前的尝试,以及数据库结构以及如何添加信息。
// Current attempt
userData.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userID = (String) dataSnapshot.child()
String name = (String) dataSnapshot.child(userID).child("Name").getValue();
String latitude = (String) dataSnapshot.child(userID).child("Lat").getValue();
String longitude = (String) dataSnapshot.child(userID).child("Lng").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
// The database structure
Users
0e2034ce-bdb0-4623-9f9e-84e302a78354
Name:
Lat:
Lng:
26d14b76-8341-4167-a670-905e5a58f5db
Name:
Lat:
Lng:
// How data is added to the database
DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userData = mRootRef.child("Users");
userData = mRootRef.child("Users").child(thisUser.getUserID()); //getUserID() returns a random string like 0e2034ce-bdb0-4623-9f9e-84e302a78354
userData.setValue("");
userData.child("Name").setValue(mName);
userData.child("Lat").setValue(mLatitude);
userData.child("Lng").setValue(mLongitude);
答案 0 :(得分:1)
请使用以下代码根据需要获取数据。
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
String mName= (String) map.get("Name");
String mLatitude= (String) map.get("Lat");
String mLongitude= (String) map.get("Lng");
arrayList.add(mName+ ", " + mLatitude + ", " + mLongitude);
arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list, arrayList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(arrayAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
userData.addListenerForSingleValueEvent(eventListener);