В настоящее время я использую Sugar ORM и Android Async Http Client для моего приложения для Android.Sugar ORM не сохраняет данные в базе данных
Я прочитал документацию Sugar ORM и сделал именно то, что там написано. My HttpClient использует шаблон singleton и предоставляет методы для вызова некоторых API.
Теперь идет плохая часть об этом. Я не могу постоянно сохранять данные в моей базе данных, созданной Sugar ORM. Вот метод, который вызове API:
public void getAvailableMarkets(final Context context, final MarketAdapter adapter) {
String url = BASE_URL.concat("/markets.json");
client.addHeader("Content-Type", "application/json");
client.addHeader("Accept", "application/json");
client.get(context, url, null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
Log.i(TAG, "Fetched available markets from server: " + response.toString());
Result<Markets> productResult = new Result<Markets>();
productResult.setResults(new Gson().<ArrayList<Markets>>fromJson(response.toString(),
new TypeToken<ArrayList<Markets>>() {
}.getType()));
ArrayList<Markets> marketsArrayList = productResult.getResults();
// This lines tells me that there are no entries in the database
List<Markets> marketsInDb = Markets.listAll(Markets.class);
if(marketsInDb.size() < marketsArrayList.size() ||
marketsInDb.size() > marketsArrayList.size()) {
Markets.deleteAll(Markets.class);
for(Markets m : marketsArrayList) {
Markets market = new Markets(m.getId(), m.getName(), m.getChainId(), m.getLat(),
m.getLng(), m.getBusinessHourId(), m.getCountry(), m.getZip(), m.getCity(),
m.getStreet(), m.getPhoto(), m.getIcon(), m.getUrl());
market.save();
adapter.add(market);
}
adapter.notifyDataSetChanged();
}
List<Markets> market = Markets.listAll(Markets.class);
// This lines proves that Sugar ORM is not saving the entries
Log.i(TAG, "The market database list has the size of:" + market.size());
}
});
}
Это то, что Logcat печатает:
D/Sugar: Fetching properties
I/Sugar: Markets saved : 3
I/Sugar: Markets saved : 5
I/RestClient: The market database list has the size of:0
Кроме того, я решил посмотреть на теге сахара ОРМ здесь StackOverflow, но нет ответов или вопросы могут дать мне подсказку о том, как решить эту проблему. Я новичок в экосистеме Android и буду любить любую помощь из вас, ребята, чтобы решить эту проблему. Заранее спасибо
Вы правы. Я решил эту проблему некоторое время назад, но забыл добавить решение этой темы. Вот сайт проблемы на github SugarORM: https://github.com/satyan/sugar/issues/171 – Superbyte
Итак, мы не можем самостоятельно управлять идентификатором? –
@DeanWild, к сожалению, нет. Поскольку у этого вопроса было более 2500 просмотров, я хотел рассказать вам, ребята, что я переключился с SQLite и SugarORM на [Realm.io] (https://realm.io/docs/java/latest/), и я должен сказать это был для меня очень хорошим выбором. Realm - это объектно-ориентированная база данных, и вы можете использовать ее для Android и iOS Development. – Superbyte