У меня есть приложение, которое сохраняет в текущем местоположении Firebase (название города и т. Д.), Идентификатор и список с точками, чтобы я мог сохранить полилинию. Импорт в Firebase является успешным. Проблема заключается в том, что когда я перехожу к другой деятельности, которая содержит просмотр списка со всеми названиями городов в базе данных, происходит сбой приложения. Я попытался сделать это без списка в firebase и работает нормально. Так что проблема существует только тогда, когда firebase содержит список с точками.
Это пример моей базы огня. Здесь "ola" - это список, который содержит точки, и он у меня есть только в последнем. Если я удаляю последний, приложение работает нормально.
![enter image description here](https://i.stack.imgur.com/N6hHp.png)
import java.util.List;
public class Paths {
String id;
String name;
String city;
String nomos;
String perifereia;
List<Ola> ola;
public Paths(){
}
public Paths(String id, String name, String city, String nomos, String perifereia, List<Ola> ola) {
this.id = id;
this.name = name;
this.city = city;
this.nomos = nomos;
this.perifereia = perifereia;
this.ola = ola;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getCity() {
return city;
}
public String getNomos() {
return nomos;
}
public String getPerifereia() {
return perifereia;
}
public List<Ola> getOla() {
return ola;
}
.
public class Ola {
public double latitude;
public double longitude;
public Ola() {}
public Ola(double latitude, double longitude) {
this.latitude = latitude;
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}
А вот и ошибка:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.spiros.mypath, PID: 28814
com.google.firebase.database.DatabaseException: Can't convert object of type java.util.ArrayList to type com.example.spiros.mypath.Ola
at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzku.zza(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.example.spiros.mypath.CitiesList$1.onDataChange(CitiesList.java:44)
at com.google.android.gms.internal.firebase_database.zzfc.zza(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source)
at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6595)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
И это код, который получает данные из базы данных:
databasePaths = FirebaseDatabase.getInstance().getReference("Paths");
databasePaths.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot items: dataSnapshot.getChildren())
{
info = items.getValue(Paths.class);
ArrayListCities.add(info.city);
}
adapterCities = new ArrayAdapter<>(CitiesList.this, android.R.layout.simple_list_item_1, ArrayListCities);
ListViewCities.setAdapter(adapterCities);
adapterCities.notifyDataSetChanged();
ListViewCities.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedFromListCities = (ListViewCities.getItemAtPosition(position).toString());
Intent IntentGoN = new Intent(getApplicationContext(), FullListByCity.class);
IntentGoN.putExtra("city", selectedFromListCities);
startActivity(IntentGoN);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});