我刚刚发现了TinyDB,这对于将对象存储处理到SharedPreferences中似乎非常有用。
我几乎就在那里,但我收到错误:忘记注册类型适配器了? 请注意,Google的GSON库与TinyDB一起使用。
所以,让我与你分享我的代码。任何帮助都将受到高度赞赏。
这是stackTrace
City city = new City(description, itemLatitude, itemLongitude);
ArrayList<Object> savedCity = new ArrayList<>();
savedCity.add(city);
for (City oCity : CityArrayList.getInstance().getCityList()) {
savedCity.add(oCity);
}
TinyDB tinydb = new TinyDB(this);
tinydb.putObject("city", CityArrayList.class);
所以,让我与你分享我的代码。任何帮助都将受到高度赞赏。
所以这是我将对象添加到TinyDB的时刻
public class CityArrayList {
public ArrayList<City> cityList;
private CityArrayList() {
cityList = new ArrayList<City>();
}
public ArrayList<City> getCityList() {
return cityList;
}
private static CityArrayList instance;
public static CityArrayList getInstance() {
if (instance == null) instance = new CityArrayList();
return instance;
}
}
这是我的模特
public class City {
private String cityName;
private double cityLat;
private double cityLong;
public City(String cityName, double cityLat, double cityLong) {
this.cityName = cityName;
this.cityLat = cityLat;
this.cityLong = cityLong;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public double getCityLat() {
return cityLat;
}
public void setCityLat(double cityLat) {
this.cityLat = cityLat;
}
public double getCityLong() {
return cityLong;
}
public void setCityLong(double cityLong) {
this.cityLong = cityLong;
}
@Override
public String toString() {
return "City{" +
"cityName='" + cityName + '\'' +
", cityLat=" + cityLat +
", cityLong=" + cityLong +
'}';
}
}
对于城市本身
{{1}}
答案 0 :(得分:3)
putObject
方法要求您传入String键和已经实例化的对象,不类类型。
这是您的代码应该正常工作的内容:
City mCity = new City(description, itemLatitude, itemLongitude);
tinydb.putObject("city", mCity);