2017-02-19 95 views
1

我使用火力地堡数据库为我的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

你为什么使用原始'List'? – shmosel

+0

我看到你在嵌套链表。这可能不是最好的主意。你能分享你正在阅读的JSON结构吗(作为文本,没有截图)?您可以轻松地通过点击[您火力地堡数据库控制台]导出JSON链接得到这个(https://console.firebase.google.com/project/_/database/data/)。 –

+0

我已经交锋JSON结构,我的职务。什么可以替代嵌套链表? – DzouSi

回答

0

你正在做的总比困难多是必要的。当你从DataSnapshot在一个呼叫检索例如目标清单只需要一个GenericTypeIndicator。如果你只需要一个单一的目标,你可以在类传递给getValue()

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

当你在这,你可能想的List更改为类型安全的集合:

private List<Goal> locations;