私はコールバックの中に埋め込まれたツイートのarraylistを使用しようとしていますが、ビルドされたリストを返す方法を理解できません。ビルドされたリストを使用しようとするたびに、それは空です。 返されたarraylistがコールバックの中に埋め込まれています
私は、あなたがCallback
からの応答が成功したときに別の
ArrayList
Tweet
のSが更新され、あなたの方法を変更することができる代わりに、空の
ArrayList
Tweet
のSを返すのこの
post
public ArrayList<Tweet> tweetList() {
final ArrayList<Tweet> tweets = new ArrayList<>();
final UserTimeline userTimeline = new UserTimeline.Builder()
.screenName("xxxxxxxx")
.build();
userTimeline.next(null, new Callback<TimelineResult<Tweet>>() {
@Override
public void success(Result<TimelineResult<Tweet>> result) {
for(Tweet tweet : result.data.items){
tweets.add(tweet);
}
Log.d("Finished Tweet List", String.valueOf(tweets));
// when this is printed I can see the ArrayList and all tweets are there
}
@Override
public void failure(TwitterException exception) {
exception.printStackTrace();
}
});
Log.d("Tweet list returned", String.valueOf(tweets));
// the value of tweets is empty here for some reason
return tweets;
}
情報がコールバック経由で返されるため、メソッドが非同期であると推測しています。その場合、あなたのメソッドはインターネットにアクセスし、そのコールバックが起動する前に戻る別のスレッドを開始しています。あなたがしたい仕事をコールバックの中に入れ、情報が適切に配信されたことを確認します。 –