我想保存和閱讀List<MyObj>
使用Gson
sharedPreferences。無法讀取列表與Gson的寫作
這是我寫的方法:
private static final String GAS_STATIONS_LIST_KEY = "gasStationsListKey";
@Override
public void save(@NonNull List<MyObj> gasStations) {
saveStr(GAS_STATIONS_LIST_KEY, gson.toJson(gasStations));
}
private void saveStr(@NonNull String key, @Nullable String value) {
sharedPreferences
.edit()
.putString(key, value)
.apply();
}
這是我讀法:
@Override
public List<MyObj> getGasStationList() {
final Type type = new TypeToken<List<MyObj>>() {
}.getClass();
final List<MyObj> gasStations = gson.fromJson(GAS_STATIONS_LIST_KEY, type); // here null
if (gasStations != null && !gasStations.isEmpty()) {
return gasStations;
} else {
return new ArrayList<>();
}
}
但是當我嘗試讀取數據,我得到空(在最後部分代碼註釋)。
如何解決?
是什麼GAS_STATIONS_LIST_KEY? – Pavya
@Pravin更新問題 – Artem
您沒有從共享的prefences獲取保存的json內容。你試圖反序列化的關鍵到列表,而不是與該鍵保存的JSON內容 – Devrim