2017-02-19 69 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;