使用 TweetTimelineListAdapter 加载 UserTimeline 时回调以识别问题
Callback to identify issue while loading UserTimeline using TweetTimelineListAdapter
我正在尝试使用 UserTimeline
和 TweetTimelineListAdapter
来获得 TimeLine
,因为可以在 fabric 文档中找到 here。如果我使用我的 open n/w 并提供适当的下载速度,我能够正确加载时间轴。我在最初加载时间轴时显示 ProgressDialog
。
问题:
如果我在公司 n/w 办公室或者如果我的 2G/3G n/w 太 slow/intermittent,我不确定如何确定它何时真正超时以及这样我不确定什么时候解雇 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
}
};
如果我需要提供更多信息,请告诉我。
所以我终于自己弄明白了,并回答了我自己的问题,以防有人感兴趣。
我最初依赖于以下代码行,其中有一些抽象时间来加载 Twitter 时间线,同时我的 Activity 是空白的。为了应对延迟,我显示了ProgressDialog
。但正如上面提到的问题,我需要知道在哪里关闭对话框。
final UserTimeline userTimeline = new UserTimeline.Builder().screenName(brandScreenName).build();
// create custom TimeLine adapter object
adapter = new TweetTimelineListAdapter(this, userTimeline);
我发现我们实际上可以调用以下 API 可用于 UserTimeline
以使用 success
和 failure
方法获得 Callback
。
// 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)
被调用并得到了正确的结果,它没有通过通知 adapter
来刷新 ListView
。为了解决这个问题,我创建了 class CustomTimeLineAdapter extends TweetTimelineListAdapter
并覆盖了 getItem
、getCount
和 getView
等方法,以从 ArrayList
中获取 Tweet
在上面提到的 success
回调中填充。
我正在尝试使用 UserTimeline
和 TweetTimelineListAdapter
来获得 TimeLine
,因为可以在 fabric 文档中找到 here。如果我使用我的 open n/w 并提供适当的下载速度,我能够正确加载时间轴。我在最初加载时间轴时显示 ProgressDialog
。
问题:
如果我在公司 n/w 办公室或者如果我的 2G/3G n/w 太 slow/intermittent,我不确定如何确定它何时真正超时以及这样我不确定什么时候解雇 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
}
};
如果我需要提供更多信息,请告诉我。
所以我终于自己弄明白了,并回答了我自己的问题,以防有人感兴趣。
我最初依赖于以下代码行,其中有一些抽象时间来加载 Twitter 时间线,同时我的 Activity 是空白的。为了应对延迟,我显示了ProgressDialog
。但正如上面提到的问题,我需要知道在哪里关闭对话框。
final UserTimeline userTimeline = new UserTimeline.Builder().screenName(brandScreenName).build();
// create custom TimeLine adapter object
adapter = new TweetTimelineListAdapter(this, userTimeline);
我发现我们实际上可以调用以下 API 可用于 UserTimeline
以使用 success
和 failure
方法获得 Callback
。
// 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)
被调用并得到了正确的结果,它没有通过通知 adapter
来刷新 ListView
。为了解决这个问题,我创建了 class CustomTimeLineAdapter extends TweetTimelineListAdapter
并覆盖了 getItem
、getCount
和 getView
等方法,以从 ArrayList
中获取 Tweet
在上面提到的 success
回调中填充。