2017-02-19 4 views
1

Ich benutze Firebase-Datenbank für meine Android-App. Ich habe Unternehmen:Klasse java.util.List hat generische Typparameter, bitte verwenden GenericTypeIndicator stattdessen

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

Und ich versuche diese Objekte aus der Datenbank wie folgt zu erhalten:

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

Aber dann bekomme ich die Fehler

Klasse java.util.List generische Typparameter hat, benutzen Sie bitte GenericTypeIndicator statt Ausnahme

meine Datenbank 0

JSON Struktur:

{ 
    "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 
     } 
    } 
    } 
} 

Wie kann ich meinen Code zu machen alles ändern funktioniert?

+1

Warum verwenden Sie eine rohe 'List'? – shmosel

+0

Ich sehe, dass Sie die verknüpfte Liste verschachteln. Das ist vielleicht nicht die beste Idee. Können Sie die JSON-Struktur teilen, die Sie gerade lesen (als Text, kein Screenshot)? Sie können dies leicht erreichen, indem Sie in [Firebase-Datenbankkonsole] (https://console.firebase.google.com/project/_/database/data/) auf den Link JSON exportieren klicken. –

+0

Ich habe die JSON-Struktur zu meinem Beitrag hinzugefügt. Was kann eine Alternative zur verschachtelten Liste sein? – DzouSi

Antwort

0

Sie machen es schwieriger als nötig. A GenericTypeIndicator wird nur benötigt, wenn Sie beispielsweise eine Liste von Zielen aus einem DataSnapshot in einem Aufruf abrufen. Wenn Sie nur ein einziges Ziel, dann können Sie in der Klasse getValue() passieren:

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

Während Sie gerade dabei sind, möchten Sie vielleicht die List auf eine typsichere Sammlung ändern:

private List<Goal> locations; 
Verwandte Themen