firebase按用户ID引用Child

时间:2018-02-23 16:32:09

标签: android firebase firebase-realtime-database

这是我的firebase-database。

Firebase database

 Query lastQuery = databaseReference.child("rawlocations").child("12345678").limitToLast(1);

lastQuery.addChildEventListener(new ChildEventListener() {
   @Override
   public void onChildAdded(DataSnapshot dataSnapshot, String s) {

    Double latt= (Double) dataSnapshot.child("lat").getValue();
    Double lngg= (Double) dataSnapshot.child("lng").getValue();
    LatLng location=new LatLng(latt,lngg);
});

在这个数据库中,位置每10米更新一次。现在我想引用最近更新的位置?我如何在我的代码中引用它?任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:0)

试试这个,它可以在我的代码中使用,并且可以反映我孩子的每一个价值

 mDatabase.child("raw-locations").child("12345678").addValueEventListener(new ValueEventListener() {
                    final List<String> lstItems= new ArrayList<String>();

                    @Override
                    public void onDataChange(final DataSnapshot dataSnapshot) {

                        for(DataSnapshot ds : dataSnapshot.getChildren()) {
                            String name = (String) ds.getKey();
                            String values = (String) ds.getValue();
                            Log.e("Values",""+values );
                            lstItems.add(values );

                        }

你也可以改变这一行

String values = (String) ds.getValue();

用这个

String Latvalue = (String) ds.child("lat").getValue();

答案 1 :(得分:0)

如果您想获得单个ID的纬度和长度,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference idRef = rootRef.child("raw-locations").child("12345678");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            double lat = ds.child("lat").getValue(Double.class);
            double lng = ds.child("lng").getValue(Double.class);
            Log.d("TAG", lat + " / " + lng);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
idRef.addListenerForSingleValueEvent(eventListener);

如果你想要所有的id,你需要循环两次。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference rawRef = rootRef.child("raw-locations");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            for(DataSnapshot dSnapshot : ds.getChildren()) {
                double lat = dSnapshot.child("lat").getValue(Double.class);
                double lng = dSnapshot.child("lng").getValue(Double.class);
                Log.d("TAG", lat + " / " + lng);

            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
rawRef.addListenerForSingleValueEvent(eventListener);