2017-02-19 10 views
1

Я использую базу данных Firebase для своего приложения для Android. У меня есть сущность:Класс java.util.List имеет общие параметры типа, пожалуйста, используйте GenericTypeIndicator вместо

public class Goal implements Serializable { 
     private double averageSpeed; 
     private long duration; 
     private Date startDate; 
     private Date endDate; 
     private LinkedList <LatLng> locations; 
    ... 
    } 

И я пытаюсь получить эти объекты из базы данных, как это:

public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       Goal goal = dataSnapshot.getValue(Goal.class); 
       goalAdapter.add(goal); 
      } 

Но тогда я получаю ошибку

Класс java.util.List имеет общие параметры типа, используйте вместо этого исключение GenericTypeIndicator

JSON структура моей базы данных:

{ 
    "goals" : { 
    "-KdPyQTvht4seniKUk6o" : { 
     "averageSpeed" : 0, 
     "distance" : 0, 
     "duration" : 619, 
     "endDate" : { 
     "date" : 20, 
     "day" : 1, 
     "hours" : 12, 
     "minutes" : 3, 
     "month" : 1, 
     "seconds" : 21, 
     "time" : 1487585001328, 
     "timezoneOffset" : -120, 
     "year" : 117 
     }, 
     "locations" : [ { 
     "latitude" : 50.5066025, 
     "longitude" : 30.4184 
     }, { 
     "latitude" : 50.506281, 
     "longitude" : 30.4189611 
     } ], 
     "startDate" : { 
     "date" : 20, 
     "day" : 1, 
     "hours" : 12, 
     "minutes" : 2, 
     "month" : 1, 
     "seconds" : 44, 
     "time" : 1487584964181, 
     "timezoneOffset" : -120, 
     "year" : 117 
     } 
    } 
    } 
} 

Как я могу изменить свой код, чтобы сделать все работает отлично?

+1

Почему вы используете исходный «Список»? – shmosel

+0

Я вижу, что вы вложили связанный список. Возможно, это не лучшая идея. Можете ли вы поделиться структурой JSON, которую вы читаете (как текст, без скриншота)? Вы можете легко получить это, щелкнув ссылку Экспорт JSON в [вашей консоли базы данных Firebase] (https://console.firebase.google.com/project/_/database/data/). –

+0

Я применил структуру JSON к своему сообщению. Что может быть альтернативой nesting связанного списка? – DzouSi

ответ

0

Вы делаете это сложнее, чем это необходимо. A GenericTypeIndicator необходим только тогда, когда вы извлекаете, например, список целей из DataSnapshot за один вызов. Если вам нужен только одну цель, вы можете пройти в классе getValue():

Goal goal = dataSnapshot.getValue(Goal.class); 

Пока вы на него, вы можете захотеть изменить List к типобезопасного коллекции: с

private List<Goal> locations;