背景Robospice存储对象,通过Ormlite扩展数据库中的ArrayList
我一直在试图修改Robospice Ormlite example code,我已经成功运行。我所做的唯一更改是我有一个包含对象数组的JSON响应。
我创建2类:
public class Foos extends ArrayList<Foo>
public class Foo
我有最初的问题,因为我的JSON响应是一个纯粹的阵列没有外容器。我通过google群体阅读,解决这个问题的方法是创建一个扩展ArrayList的“假”类(Foos)。这产生了下面的代码:
public class FooRequest extends SpringAndroidSpiceRequest<Foos> {
private String baseUrl;
public FooRequest() {
super(Foos.class);
this.baseUrl = "http://somewhere.com/jsonurl";
}
@Override
public Foos loadDataFromNetwork() throws RestClientException {
Ln.d("Call web service " + baseUrl);
return getRestTemplate().getForObject(baseUrl, Foos.class);
}
}
然后我创建了以下服务代码,从这些例子改编而来。
public class MySpiceService extends SpringAndroidSpiceService {
private static final int WEBSERVICES_TIMEOUT = 10000;
@Override
public CacheManager createCacheManager(Application application) {
CacheManager cacheManager = new CacheManager();
List< Class<?>> classCollection = new ArrayList< Class<?>>();
// add persisted classes to class collection
classCollection.add(Foos.class);
// init
RoboSpiceDatabaseHelper databaseHelper = new RoboSpiceDatabaseHelper(application, "sample_database.db", 2);
InDatabaseObjectPersisterFactory inDatabaseObjectPersisterFactory = new InDatabaseObjectPersisterFactory(application, databaseHelper, classCollection);
cacheManager.addPersister(inDatabaseObjectPersisterFactory);
return cacheManager;
}
@Override
public RestTemplate createRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
// set timeout for requests
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
httpRequestFactory.setReadTimeout(WEBSERVICES_TIMEOUT);
httpRequestFactory.setConnectTimeout(WEBSERVICES_TIMEOUT);
restTemplate.setRequestFactory(httpRequestFactory);
// web services support xml responses
MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter();
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
final List< HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters();
listHttpMessageConverters.add(jsonConverter);
listHttpMessageConverters.add(formHttpMessageConverter);
listHttpMessageConverters.add(stringHttpMessageConverter);
restTemplate.setMessageConverters(listHttpMessageConverters);
return restTemplate;
}
}
问题
代码运行但没有任何力量关闭我从来不打我activity.Neither内RequestListener内部类的成功或失败消息的方法被解雇,它似乎相当困难调试,所以它感觉像一个“无声失败”。
public final class MyRequestListener implements RequestListener<Foos> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Toast.makeText(SampleSpiceActivity.this, "failure", Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestSuccess(final Articles result) {
Toast.makeText(SampleSpiceActivity.this, "success", Toast.LENGTH_SHORT).show();
}
}
我已经试过
我曾尝试注释类Foo,与Ormlite注释,看是否所需的函数库了援助之手,但仍没有运气。如下所示:
@DatabaseTable
public class Foo {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
private String someText;
}
我不知道这是否是Foos类的结果,当我真的想要一个存储Foo的数据库表时。任何建议都会很棒!
RoboSpice附带调试启用日志记录,是logcat的打印有用的东西? – rciovati 2013-04-04 07:48:27
我一直试着用不同的断点,但logcat中没有什么有趣的东西出现。正如你在代码中看到的那样,我也保存了一些调试信息。 – 2013-04-04 08:56:18
在没有任何回答的情况下在这里找到同样的问题https://groups.google.com/forum/?fromgroups=#!searchin/robospice/ormlite/robospice/inqSyQkwGn8/axXhozO7PTIJ – 2013-04-04 15:04:52