Obtener el último elemento en la base de datos anidada firebase android
Esta es mi estructura de datos:
Aquí quiero recuperar la latitud y la longitud del último artículo del niño de la localización basado en el id = "sd" .
- Permiso de Firebase negado Error
- No se puede obtener URI de referencia de almacenamiento en Firebase
- ANR con FCM y construir variantes con applicationIdSuffix
- Cargando más elementos en el usuario desplazarse con FirebaseIndexRecyclerAdapter
- Cambio del nombre del paquete Firebase
Aquí está el código:
Query query = mDatabase.child("Users").orderByChild("Id").equalTo(busId); // busId = "sd" query.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot user : dataSnapshot.getChildren()) { Query lastItem = user.getRef().child("Location").orderByKey().limitToLast(1); lastItem.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String lat = dataSnapshot.child("Latitude").getValue().toString(); } @Override public void onCancelled(DatabaseError databaseError) { } }); break; } }
¿Cómo puedo hacer eso? Gracias
- Android Firebase Cloud Messaging (FCM): ¿SuscribeToTopic hará intentos automáticos?
- "No se pudo resolver: com.google.firebase: firebase-core: 9.0.0"
- Actualizar la interfaz de usuario de Android desde la devolución de llamada de firebase
- Soporte de seguimiento de pantalla - Firebase 9.8
- Icono de notificación con el nuevo sistema de mensajería de Cloud Firebase
- La mensajería en la nube de FireBase no funciona
- ¿Soporta / soportará Google NDK C ++ falla en Firebase Crash Reporting?
- Data not refreshing "DynamiteModule: clase de descriptor de módulo local para com.google.firebase.auth no encontrada"
Utiliza este código para Android:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference userRef = rootRef.child("Users"); ValueEventListener eventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()) { String Id = ds.child("Id").getValue(String.class); if(Id.equals("sd")) { Query q = ds.child("Location").getRef().orderByKey().limitToLast(1); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot child : dataSnapshot.getChildren()) { Double latitude = child.child("Latitude").getValue(Double.class); Double longitude = child.child("Longitude").getValue(Double.class); Log.d("TAG", latitude + " / " + longitude); } } @Override public void onCancelled(DatabaseError databaseError) {} }; q.addListenerForSingleValueEvent(valueEventListener); } } } @Override public void onCancelled(DatabaseError databaseError) {} }; userRef.addListenerForSingleValueEvent(eventListener);