twitterアプリ開発 タイムラインを自動更新させたいです
twitterの自作androidアプリを作成しているものです。
初心者です。
twitte4jを利用しております。
なんとかタイムラインを表示させるところまで作成しました。
そこで、手動更新するのではなく、自動でタイムラインが更新される設定を加えたいのですが、
StreamingAPIについて勉強中ですがよくわからない状態でいます。
MainActivityのコード載せるので、どこにどのようなコードを書き加えるべきかなど、自動更新機能追加への助言をいただければ幸いです。
どうかよろしくお願い致します。
public class MainActivity extends ListActivity {
private TweetAdapter mAdapter;
private Twitter mTwitter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!TwitterUtils.hasAccessToken(this)) {
Intent intent = new Intent(this, TwitterOAuthActivity.class);
startActivity(intent);
finish();
} else{
mAdapter = new TweetAdapter(this);
setListAdapter(mAdapter);
mTwitter = TwitterUtils.getTwitterInstance(this);
reloadTimeLine();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private class TweetAdapter extends ArrayAdapter<twitter4j.Status> {
private LayoutInflater mInflater;
public TweetAdapter(Context context) {
super(context, android.R.layout.simple_list_item_1);
mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_tweet, null);
}
Status item = getItem(position);
TextView name = (TextView) convertView.findViewById(R.id.name);
name.setText(item.getUser().getName());
TextView screenName = (TextView) convertView.findViewById(R.id.screen_name);
screenName.setText("@" + item.getUser().getScreenName());
TextView text = (TextView) convertView.findViewById(R.id.text);
text.setText(item.getText());
SmartImageView icon = (SmartImageView) convertView.findViewById(R.id.icon);
icon.setImageUrl(item.getUser().getProfileImageURL());
return convertView;
}
}
private void reloadTimeLine() {
AsyncTask<Void, Void, List<twitter4j.Status>> task = new AsyncTask<Void, Void, List<twitter4j.Status>>() {
@Override
protected List<twitter4j.Status> doInBackground(Void... params) {
try {
return mTwitter.getHomeTimeline();
} catch (TwitterException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<twitter4j.Status> result) {
if (result != null) {
mAdapter.clear();
for (twitter4j.Status status : result) {
mAdapter.add(status);
}
getListView().setSelection(0);
} else {
showToast("タイムラインの取得に失敗しました。。。");
}
}
};
task.execute();
}
private void showToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
}