使用TweetTimelineListAdapter

时间:2015-07-15 12:03:57

标签: android twitter twitter-fabric

我正在尝试使用UserTimelineTweetTimelineListAdapter来获取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
    }

};

如果我需要提供更多信息,请与我们联系。

1 个答案:

答案 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,以Callbacksuccess方法获取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并覆盖了getCountgetViewTweet等方法,以便从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]; } 回调。