

twitterの自作androidアプリを作成しているものです。  
初心者です。  
twitte4jを利用しております。

なんとかタイムラインを表示させるところまで作成しました。  
そこで、手動更新するのではなく、自動でタイムラインが更新される設定を加えたいのですが、  
StreamingAPIについて勉強中ですがよくわからない状態でいます。  
MainActivityのコード載せるので、どこにどのようなコードを書き加えるべきかなど、自動更新機能追加への助言をいただければ幸いです。  
どうかよろしくお願い致します。

[code]

    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();
        }
    }
    
[/code]


CC BY-SA 3.0
2015-11-17T07:28:14.537
18939
2015-11-18T08:54:52.963
2015-11-17T09:19:16.383
7290
13271
question
android java twitter
twitterアプリ開発　タイムラインを自動更新させたいです


Twitter4Jは[TwitterStream](http://twitter4j.org/javadoc/twitter4j/TwitterStream.html)というクラスがあって、それを使ったほうが楽と思います。  
例：

[code]

            TwitterStream twitterStream = new TwitterStreamFactory().getInstance();
            StatusListener listener = new StatusListener() {
                @Override
                public void onStatus(Status status) {
                    System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
                }
    
                @Override
                public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                    System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
                }
    
                @Override
                public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
                    System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
                }
    
                @Override
                public void onScrubGeo(long userId, long upToStatusId) {
                    System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
                }
    
                @Override
                public void onStallWarning(StallWarning warning) {
                    System.out.println("Got stall warning:" + warning);
                }
    
                @Override
                public void onException(Exception ex) {
                    ex.printStackTrace();
                }
            };
            twitterStream.addListener(listener);
            twitterStream.sample();
    
[/code]


CC BY-SA 3.0
2015-11-18T08:54:52.963
18985
2015-11-18T08:54:52.963
2437
18939
answer