У меня есть этот класс МАРШРУТ:Как получить значение списка <Marker> в моем собственном классе, хранящемся в базе данных о Firebase
/**
* Created by alejandro on 18-10-16.
*/
public class Itinerario {
private String nombre;
private String descripcion;
private List<Marker> puntos;
private String fecha;
public Itinerario(String usuario, List<Marker> puntos, String descripcion, String fecha) {
this.nombre = usuario;
this.puntos = puntos;
this.descripcion = descripcion;
this.fecha = fecha;
}
public String getUsuario() {
return nombre;
}
public void setUsuario(String usuario) {
this.nombre = usuario;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public List<Marker> getPuntos() {
return puntos;
}
public void setPuntos(List<Marker> puntos) {
this.puntos = puntos;
}
public String getFecha() {
return fecha;
}
public void setFecha(String fecha) {
this.fecha = fecha;
}
}
И сохранить объекты в базе данных с помощью этого метода:
Itinerario prueba = new Itinerario("Prueba",
markers,
"desc",
String.valueOf(fecha.getTime()));
myRef.child("myitineraries").child(String.valueOf(fecha.getTime())).setValue(prueba);
я получаю все значения Firebase базы данных с этим, и я поставил один за другим в списке
//Declare
public ArrayList<Itinerario> resultsItinerarios = new ArrayList<>();
myRefItinerary.child("myitineraries").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Itinerario obj = null;
try {
List<Marker> map = (List<Marker>) dataSnapshot.child("puntos").getValue();
obj = new Itinerario(
dataSnapshot.child("usuario").getValue().toString(),
map,
dataSnapshot.child("descripcion").getValue().toString(),
dataSnapshot.child("fecha").getValue().toString());
} catch (Exception e) {
}
if (obj != null) {
//List<Marker>
resultsItinerarios.add(obj);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Itinerario obj = null;
try {
List<Marker> map = (List<Marker>) dataSnapshot.child("puntos").getValue();
obj = new Itinerario(
dataSnapshot.child("usuario").getValue().toString(),
map,
dataSnapshot.child("descripcion").getValue().toString(),
dataSnapshot.child("fecha").getValue().toString());
} catch (Exception e) {
}
if (obj != null) {
resultsItinerarios.remove(obj);
}
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Но всегда мне нужно получить значение маркеров в моем списке resultsItinerarios,
Пример:
Toast.makeText(MainActivity.this, "A: "
+ getResultsItinerarios().get(0).getPuntos().get(0).getPosition().latitude, Toast.LENGTH_SHORT).show();
Я получаю эту ошибку:
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.google.android.gms.maps.model.Marker
Но если я использую это:
Toast.makeText(MainActivity.this, "A: "
+ getResultsItinerarios().get(0).getPuntos().get(0), Toast.LENGTH_SHORT).show();
(Без getPosition(). Latitude или getPosition(). Longitude) Я получаю все значения, представляющие даже широту и долгота.
Это выход:
10-19 03:10:52.203 29076-29076/cl.datacomputer.alejandrob.gogps I/ExampleGOGps:
{draggable=false, alpha=1, infoWindowShown=false, id=m0, rotation=208877154, visible=true, zindex=0, position={latitude=-33.5174604, longitude=-70.7830533}, flat=false}
И я не мог найти способ, чтобы получить данные, я прикрепить изображение Firebase базы данных.
Пожалуйста, мне нужна ваша помощь.
С уважением.
Алехандро Б.
Спасибо Вам, отличная проблема была решена в течение нескольких минут. Ты лучший !!!!! : D С уважением. –
Добро пожаловать! –
* firebaser здесь * В версиях 9.x Джексон больше не встроен, но есть специальный сериализатор/десериализатор. При необходимости вы все еще можете использовать * Jackson, вам просто нужно добавить зависимость самостоятельно. –