我正在尝试使用UserTimeline
和TweetTimelineListAdapter
来获取TimeLine
,因为在结构文档中可以找到here。如果我使用我的打开的n / w并且提供了正确的下载速度,我可以正确加载时间轴。我在最初加载时间轴时显示ProgressDialog
。
问题:
如果我在办公室的公司办公室,或者我的2G / 3G n / w太慢/间歇性,我不知道如何确定何时真的超时,因此我不确定何时解雇ProgressDialog
。
问题:
是否有任何回调,它被挂钩到TweetTimelineListAdapter
或类似的东西,以便在尝试加载时间轴时我可以获得任何错误,超时等。
我的方法充其量:
我可以使用DataSetObserver
并查看时间轴是否已加载和解除。但是,如果在加载时出现任何错误或超时问题,我无法找到任何内容。
adapter.registerDataSetObserver(mTwitterDatasetObsv);
DataSetObserver mTwitterDatasetObsv = new DataSetObserver() {
@Override
public void onChanged() {
super.onChanged();
// dismiss progress dialog
}
@Override
public void onInvalidated() {
super.onInvalidated();
// dismiss progress dialog
}
};
如果我需要提供更多信息,请与我们联系。
答案 0 :(得分:3)
所以我终于弄明白了,并回答了我自己的问题,以防任何人感兴趣。
我最初依赖于以下代码行,其中有一些抽象的时间来加载Twitter时间线,同时我的Activity是空白的。为了应对延迟,我展示了ProgressDialog
。但如上所述,我需要知道在哪里解除对话。
final UserTimeline userTimeline = new UserTimeline.Builder().screenName(brandScreenName).build();
// create custom TimeLine adapter object
adapter = new TweetTimelineListAdapter(this, userTimeline);
我发现我们可以实际调用UserTimeline
可用的以下API,以Callback
和success
方法获取failure
。
// trigger userTimeline manually to get latest tweets
userTimeline.previous(null, new Callback<TimelineResult<Tweet>>() {
@Override
public void success(Result<TimelineResult<Tweet>> result) {
}
@Override
public void failure(TwitterException exception) {
}
});
但仅凭上述情况,并没有解决我的问题,因为第一次使用正确的结果调用success(Result<TimelineResult<Tweet>> result)
时,通过ListView
通知adapter
没有刷新class CustomTimeLineAdapter extends TweetTimelineListAdapter
。为了解决这个问题,我创建了getItem
并覆盖了getCount
,getView
和Tweet
等方法,以便从ArrayList
中获取success
填充上面提到的 // Migrate to local
-(NSURL *)localStoreURL
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"LocalExpns.sqlite"];
return storeURL;
}
- (void)moveStoreToLocal
{
NSError *error = nil;
NSPersistentStoreCoordinator * persistentStoreCoordinator = self.persistentStoreCoordinator;
NSPersistentStore * persistentStore = [[persistentStoreCoordinator persistentStores] firstObject];
if([[NSFileManager defaultManager]fileExistsAtPath:[self localStoreURL].path])
{
NSLog(@"File exists");
[[NSFileManager defaultManager] removeItemAtPath:[self localStoreURL].path error:& error];
NSLog(@"Removing error = %@", error);
}
NSMutableDictionary *localStoreOptions = [[self localStoreOptions] mutableCopy];
[localStoreOptions setObject:[NSNumber numberWithBool:YES] forKey:NSPersistentStoreRemoveUbiquitousMetadataOption];
id result = [persistentStoreCoordinator migratePersistentStore:persistentStore toURL:[self localStoreURL] options:localStoreOptions withType:NSSQLiteStoreType error:&error];
}
回调。