TinyDB - SharedPreferences - 获取:忘记注册类型适配器?

时间:2016-07-17 09:01:30

标签: android sharedpreferences tinydb

我刚刚发现了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}}

1 个答案:

答案 0 :(得分:3)

你正在传递错误的东西。 putObject方法要求您传入String键和已经实例化的对象,类类型。

这是您的代码应该正常工作的内容:

City mCity = new City(description, itemLatitude, itemLongitude);
tinydb.putObject("city", mCity);