Guest User

Untitled

a guest
May 31st, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.87 KB | None | 0 0
  1. mTwitter = TwitterUtils.getTwitterInstance(this);
  2. mAdapter = new TweetAdapter(this);
  3. setListAdapter(mAdapter);
  4.  
  5. ListView lv = getListView();
  6. // リストビューにフッターを追加
  7. lv.addFooterView(getFooter());
  8. lv.setOnScrollListener(new AbsListView.OnScrollListener() {
  9.  
  10. // スクロール中の処理
  11. @Override
  12. public void onScroll(AbsListView view, final int firstVisibleItem, final int visibleItemCount, final int totalItemCount) {
  13. AsyncTask<Void, Void, List<twitter4j.Status>> task = new AsyncTask<Void, Void, List<twitter4j.Status>>() {
  14.  
  15. @Override
  16. protected List<twitter4j.Status> doInBackground(Void... params) {
  17.  
  18. try {
  19. Thread.sleep(500);
  20.  
  21.  
  22. } catch (InterruptedException e) {
  23. // TODO 自動生成された catch ブロック
  24. e.printStackTrace();
  25.  
  26. }
  27. return null;
  28.  
  29.  
  30. }
  31.  
  32. @Override
  33. protected void onPostExecute(List<twitter4j.Status> result) {
  34.  
  35. if (result != null) {
  36.  
  37. // 最初とスクロール完了したとき
  38. if ((totalItemCount - visibleItemCount) == firstVisibleItem) {
  39.  
  40. // アイテムの数 フッター分の1を引く
  41. Integer ItemCount = totalItemCount - 1;
  42.  
  43.  
  44. ResponseList<twitter4j.Status> tl=null;
  45. try {
  46. tl = mTwitter.getHomeTimeline();
  47. twitter4j.Status s = tl.get(tl.size());
  48. //Pagingオブジェクトの作成
  49. Paging p = new Paging();
  50. p.setMaxId(s.getId());
  51. tl= mTwitter.getHomeTimeline(p);
  52. // アダプターにアイテムを追加します
  53. for (int i = ItemCount; i < (ItemCount + COUNT_MAX); i++) {
  54. tl.addAll(mTwitter.getHomeTimeline(p));
  55. }
  56. getListView().invalidateViews();
  57. } catch (TwitterException e) {
  58. // TODO 自動生成された catch ブロック
  59. e.printStackTrace();
  60. }
  61.  
  62.  
  63.  
  64. }
  65.  
  66. }
  67. }
  68. };
  69. task.execute();
  70.  
  71.  
  72. }
  73.  
  74. // ListViewがスクロール中かどうか状態を返すメソッドです
  75. @Override
  76. public void onScrollStateChanged(AbsListView arg0, int arg1) {
  77. }
  78. });
  79.  
  80. public class MainActivity extends ListActivity {
  81.  
  82. private TweetAdapter mAdapter;
  83. private Twitter mTwitter;
  84. private long rt_id=0;
  85. private static final int RATE_LIMITED_STATUS_CODE = 400;
  86. private static final int COUNT_MAX =10;
  87. private static ProgressDialog waitDialog;
  88. private View mFooter;
  89. //private Thread thread;
  90.  
  91.  
  92. @Override
  93. protected void onCreate(Bundle savedInstanceState) {
  94. super.onCreate(savedInstanceState);
  95.  
  96.  
  97. if (!TwitterUtils.hasAccessToken(this)) {
  98. Intent intent = new Intent(this, TwitterOAuthActivity.class);
  99. startActivity(intent);
  100. finish();
  101. } else {
  102.  
  103. mTwitter = TwitterUtils.getTwitterInstance(this);
  104. mAdapter = new TweetAdapter(this);
  105. setListAdapter(mAdapter);
  106.  
  107. ListView lv = getListView();
  108. // リストビューにフッターを追加
  109. lv.addFooterView(getFooter());
  110. lv.setOnScrollListener(new AbsListView.OnScrollListener() {
  111.  
  112. // スクロール中の処理
  113. @Override
  114. public void onScroll(AbsListView view, final int firstVisibleItem, final int visibleItemCount, final int totalItemCount) {
  115. AsyncTask<Void, Void, List<twitter4j.Status>> task = new AsyncTask<Void, Void, List<twitter4j.Status>>() {
  116.  
  117. @Override
  118. protected List<twitter4j.Status> doInBackground(Void... params) {
  119.  
  120. try {
  121. Thread.sleep(500);
  122.  
  123.  
  124. } catch (InterruptedException e) {
  125. // TODO 自動生成された catch ブロック
  126. e.printStackTrace();
  127.  
  128. }
  129. return null;
  130.  
  131.  
  132. }
  133.  
  134. @Override
  135. protected void onPostExecute(List<twitter4j.Status> result) {
  136.  
  137. if (result != null) {
  138.  
  139. // 最初とスクロール完了したとき
  140. if ((totalItemCount - visibleItemCount) == firstVisibleItem) {
  141.  
  142. // アイテムの数 フッター分の1を引く
  143. Integer ItemCount = totalItemCount - 1;
  144.  
  145.  
  146. ResponseList<twitter4j.Status> tl=null;
  147. try {
  148. tl = mTwitter.getHomeTimeline();
  149. twitter4j.Status s = tl.get(tl.size());
  150. //Pagingオブジェクトの作成
  151. Paging p = new Paging();
  152. p.setMaxId(s.getId());
  153. tl= mTwitter.getHomeTimeline(p);
  154. // アダプターにアイテムを追加します
  155. for (int i = ItemCount; i < (ItemCount + COUNT_MAX); i++) {
  156. tl.addAll(mTwitter.getHomeTimeline(p));
  157. }
  158. getListView().invalidateViews();
  159. } catch (TwitterException e) {
  160. // TODO 自動生成された catch ブロック
  161. e.printStackTrace();
  162. }
  163.  
  164.  
  165.  
  166. }
  167.  
  168. }
  169. }
  170. };
  171. task.execute();
  172.  
  173.  
  174. }
  175.  
  176. // ListViewがスクロール中かどうか状態を返すメソッドです
  177. @Override
  178. public void onScrollStateChanged(AbsListView arg0, int arg1) {
  179. }
  180. });
  181.  
  182.  
  183.  
  184. lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  185. @Override
  186. public void onItemClick(AdapterView<?> parent, final View view,
  187. final int position, final long id) {
  188. //リストビューのクリックを有効
  189. final Status item = (Status) parent.getItemAtPosition(position);
  190. //username取得
  191. final String user ="@"+ item.getUser().getScreenName() ;
  192. //RT文取得
  193. rt_id =item.getId();
  194.  
  195. //showToast(String.valueOf(rt_id));
  196. //popup-menu
  197. final CharSequence[] items = {"返信","全員へ返信", "RT","このtweetをお気に入り登録する"};
  198.  
  199. final AlertDialog.Builder listDlg = new AlertDialog.Builder(view.getContext());
  200. listDlg.setTitle(user+"さんへどうする?");
  201. listDlg.setNegativeButton("閉じる",null);
  202. listDlg.setItems(
  203. items,
  204. new DialogInterface.OnClickListener() {
  205. @Override
  206. public void onClick(final DialogInterface dialog, int which) {
  207. // リスト選択時の処理
  208. // which は、選択されたアイテムのインデックス
  209. LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
  210. View view = inflater.inflate(R.layout.new_tweet, null);
  211. Button btn =(Button)view.findViewById(R.id.action_tweet);
  212. //@Userでテキストセット
  213. final EditText editText = (EditText)view.findViewById(R.id.input_text);
  214. dialog.dismiss();
  215. //switch-case
  216. switch(which){
  217. case 0:
  218. //showToast((String) items[0]);
  219. //返信
  220. editText.setText(user +" ");
  221. //カーソルを@user+1文字分移動する
  222. editText.setSelection(user.length()+1);
  223.  
  224. //ボタン表示
  225.  
  226. btn.setOnClickListener(new View.OnClickListener() {
  227. public void onClick(View v) {
  228. if(dialog != null){
  229. dialog.dismiss();
  230. }
  231.  
  232. AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>() {
  233. @Override
  234. protected Boolean doInBackground(String... params) {
  235.  
  236. try {
  237. // 返信
  238. mTwitter.updateStatus(params[0]);
  239.  
  240. return true;
  241. } catch (TwitterException e) {
  242. e.printStackTrace();
  243. return false;
  244. }
  245. }
  246.  
  247. @Override
  248. protected void onPostExecute(Boolean result) {
  249. dialog.dismiss();
  250. if (result) {
  251. showToast("返信しました");
  252. editText.setText("");
  253. } else {
  254.  
  255. showToast("返信できませんでした");
  256.  
  257. }
  258. }
  259. };
  260. task.execute(editText.getText().toString());
  261. }
  262.  
  263.  
  264. });
  265.  
  266. new AlertDialog.Builder(MainActivity.this)
  267. .setTitle(user+"へ"+(String) items[0])
  268. .setView(view)
  269. .setPositiveButton( "返信をやめる", new DialogInterface.OnClickListener() {
  270. @Override
  271. public void onClick(DialogInterface dialog, int which) {
  272. dialog.dismiss();
  273. } }) .show();
  274.  
  275. break;
  276. case 1:
  277. //全員へ返信
  278.  
  279. UserMentionEntity[] ume = item.getUserMentionEntities();
  280. if(ume != null){
  281.  
  282. List<String> reply = new ArrayList<String>();
  283. StringBuilder sb = new StringBuilder();
  284. for(int i=0;i<ume.length;i++){
  285. UserMentionEntity replyall=ume[i];
  286. reply.add("@"+replyall.getScreenName());
  287. sb.append("@"+replyall.getScreenName()+" ");
  288.  
  289. }
  290.  
  291.  
  292. String[] replies = ( String[] )reply.toArray( new String[0] );
  293. String userall=user+" "+ new String(sb);
  294. editText.setText(user+" "+ new String(sb));
  295. editText.setSelection(userall.length());
  296. //showToast(String.valueOf(userall.length())+"文字");
  297.  
  298. }
  299.  
  300. btn.setOnClickListener(new View.OnClickListener() {
  301. public void onClick(View v) {
  302. if(dialog != null){
  303. dialog.dismiss();
  304. }
  305.  
  306.  
  307.  
  308. AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>() {
  309. @Override
  310. protected Boolean doInBackground(String... params) {
  311.  
  312. try {
  313. // 返信
  314. mTwitter.updateStatus(params[0]);
  315.  
  316.  
  317. return true;
  318. } catch (TwitterException e) {
  319. e.printStackTrace();
  320. return false;
  321. }
  322. }
  323.  
  324. @Override
  325. protected void onPostExecute(Boolean result) {
  326. dialog.dismiss();
  327. if (result) {
  328. showToast("返信しました");
  329. editText.setText("");
  330. } else {
  331.  
  332. showToast("返信できませんでした");
  333.  
  334. }
  335. }
  336. };
  337. task.execute(editText.getText().toString());
  338. }
  339.  
  340.  
  341. });
  342.  
  343. final AlertDialog.Builder listDlg = new AlertDialog.Builder(view.getContext());
  344. new AlertDialog.Builder(MainActivity.this)
  345. .setTitle((String) items[1])
  346. .setView(view)
  347. .setPositiveButton( "返信をやめる", new DialogInterface.OnClickListener() {
  348. @Override
  349. public void onClick(DialogInterface dialog, int which) {
  350. dialog.dismiss();
  351. } }) .show();
  352.  
  353.  
  354. break;
  355. case 2:
  356. //RT
  357. AsyncTask<Long,Void,Boolean> rt = new AsyncTask<Long,Void,Boolean>(){
  358. @Override
  359. protected Boolean doInBackground(Long... params) {
  360. try{
  361. mTwitter.retweetStatus(params[0]).getId();
  362.  
  363. return true;
  364. } catch (TwitterException e) {
  365. // TODO Auto-generated catch block
  366. e.printStackTrace();
  367. return false;
  368. }
  369. }
  370. @Override
  371. protected void onPostExecute(Boolean result) {
  372. dialog.dismiss();
  373. if (result) {
  374. showToast("公式RTしました");
  375. } else {
  376. showToast("公式RTできませんでした");
  377. }
  378. }
  379. };
  380. rt.execute(rt_id);
  381.  
  382. break;
  383.  
  384. case 3:
  385. // お気に入り
  386. AsyncTask<Long,Void,Boolean> fav = new AsyncTask<Long,Void,Boolean>(){
  387.  
  388. @Override
  389. protected Boolean doInBackground(Long... params) {
  390. try {
  391. mTwitter.createFavorite((params[0])).getId();
  392. return true;
  393. } catch (TwitterException e) {
  394. // TODO 自動生成された catch ブロック
  395. e.printStackTrace();
  396. return false;
  397. }
  398.  
  399.  
  400. }
  401. @Override
  402. protected void onPostExecute(Boolean result) {
  403. dialog.dismiss();
  404. if (result) {
  405. showToast("tweetをお気に入り登録しました");
  406.  
  407.  
  408. } else {
  409.  
  410. showToast("tweetをお気に入り登録できませんでした");
  411.  
  412. }
  413. }
  414.  
  415.  
  416. };
  417. fav.execute(item.getId());
  418. break;
  419. }
  420.  
  421.  
  422. }
  423.  
  424.  
  425. });
  426.  
  427. // 表示
  428.  
  429. listDlg.create().show();
  430. }
  431.  
  432. });
  433.  
  434.  
  435.  
  436. reloadTimeLine();
  437.  
  438. }
  439.  
  440. }
  441.  
  442.  
  443.  
  444.  
  445. private View getFooter() {
  446. if (mFooter == null) {
  447. mFooter = getLayoutInflater().inflate(R.layout.listview_footer,
  448. null);
  449. }
  450. return mFooter;
  451. }
  452.  
  453.  
  454.  
  455.  
  456. @Override
  457. public boolean onCreateOptionsMenu(Menu menu) {
  458. // Inflate the menu; this adds items to the action bar if it is present.
  459. getMenuInflater().inflate(R.menu.main, menu);
  460. return true;
  461. }
  462.  
  463. @Override
  464. public boolean onOptionsItemSelected(MenuItem item) {
  465. // Handle action bar item clicks here. The action bar will
  466. // automatically handle clicks on the Home/Up button, so long
  467. // as you specify a parent activity in AndroidManifest.xml.
  468. switch (item.getItemId()) {
  469. case R.id.menu_refresh:
  470. reloadTimeLine();
  471. showToast("更新しました");
  472. return true;
  473. case R.id.menu_tweet:
  474. Intent intent = new Intent(this, TweetActivity.class);
  475. startActivity(intent);
  476. finish();
  477. return true;
  478. case R.id.menu_reply:
  479. showToast("リプライ一覧を取得します。");
  480. replyTimeLine();
  481. showToast("リプライ一覧を正常に取得しました。");
  482. return true;
  483. }
  484. return super.onOptionsItemSelected(item);
  485. }
  486.  
  487.  
  488.  
  489. //Twitterのつぶやき部分のレイアウト
  490. private class TweetAdapter extends ArrayAdapter<twitter4j.Status> {
  491.  
  492. private LayoutInflater mInflater;
  493.  
  494. public TweetAdapter(Context context) {
  495. super(context, android.R.layout.simple_list_item_1);
  496. mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
  497. }
  498.  
  499. @Override
  500. public View getView(int position, View convertView, ViewGroup parent) {
  501. if (convertView == null) {
  502. convertView = mInflater.inflate(R.layout.list_item_tweet, null);
  503. }
  504.  
  505. Status item = getItem(position);
  506. //UserName
  507. TextView name = (TextView)convertView.findViewById(R.id.name);
  508. name.setText(item.getUser().getName());
  509. //@xxx(userID)
  510. TextView screenName = (TextView) convertView.findViewById(R.id.screen_name);
  511. screenName.setText("@" + item.getUser().getScreenName());
  512. //本文
  513. TextView text=(TextView) convertView.findViewById(R.id.text);
  514.  
  515.  
  516. //Replyあるときに@xxxの部分を変更
  517.  
  518. String str = item.getText();
  519.  
  520.  
  521. /*if(str.indexOf("@")!=-1){
  522. String x_user ="@"+item.getInReplyToScreenName();
  523. UserMentionEntity[] ume = item.getUserMentionEntities();
  524. if(ume != null){
  525. List reply = new ArrayList();
  526. for(int i=0;i<ume.length;i++){
  527. UserMentionEntity replyall=ume[i];
  528.  
  529. reply.add(x_user);
  530. if(str.indexOf(x_user)!= -1){
  531. int start = str.indexOf(x_user);
  532. int end = x_user.length();
  533. SpannableString spannable = new SpannableString(str);
  534. BackgroundColorSpan span = new BackgroundColorSpan(Color.argb(50, 184, 101, 204));
  535. spannable.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  536. text.setText(spannable);
  537. }else{
  538. text.setText(item.getText());
  539. }
  540.  
  541.  
  542. }
  543.  
  544. String[] replies = ( String[] )reply.toArray( new String[0] );
  545.  
  546.  
  547. }
  548.  
  549.  
  550. }
  551. else{ */
  552. text.setText(str);
  553. // }
  554.  
  555.  
  556. //Userのアイコン
  557. String iconUrl =item.getUser().getProfileImageURL();
  558. ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
  559. Glide.with(MainActivity.this).load(iconUrl).into(icon);
  560. //RTした人のユーザアイコン取得
  561. ImageView rt_icon = (ImageView) convertView.findViewById(R.id.rt_icon);
  562. if(item.isRetweet()){
  563. String rtUrl =item.getRetweetedStatus().getUser().getProfileImageURL();
  564. Glide.with(MainActivity.this).load(rtUrl).into(rt_icon);
  565. rt_icon.setVisibility(View.VISIBLE);
  566. }else{
  567. rt_icon.setVisibility(View.GONE);
  568. }
  569.  
  570. //Userの画像をタイムラインに表示
  571.  
  572. MediaEntity[] mediaEntitys = item.getExtendedMediaEntities();
  573. ImageView media1=(ImageView)convertView.findViewById(R.id.imageView1);
  574. ImageView media2=(ImageView)convertView.findViewById(R.id.imageView2);
  575. ImageView media3=(ImageView)convertView.findViewById(R.id.imageView3);
  576. ImageView media4=(ImageView)convertView.findViewById(R.id.imageView4);
  577.  
  578.  
  579.  
  580. if(mediaEntitys !=null){
  581. List list = new ArrayList();
  582.  
  583. for( int i = 0; i < mediaEntitys.length; i ++ ){
  584. MediaEntity mediaEntity = mediaEntitys[i];
  585. String mediaURL = mediaEntity.getMediaURL()+":small";
  586. list.add(mediaURL);
  587. }
  588. String[] medias = ( String[] )list.toArray( new String[0] );
  589.  
  590. switch(mediaEntitys.length){
  591. case 1:
  592. media1.setVisibility(View.VISIBLE);
  593. media2.setVisibility(View.GONE);
  594. media3.setVisibility(View.GONE);
  595. media4.setVisibility(View.GONE);
  596. Glide.with(MainActivity.this).load(medias[0]).thumbnail(0.1f).into(media1);
  597. break;
  598. case 2:
  599. media1.setVisibility(View.VISIBLE);
  600. media2.setVisibility(View.VISIBLE);
  601. media3.setVisibility(View.GONE);
  602. media4.setVisibility(View.GONE);
  603. Glide.with(MainActivity.this).load(medias[0]).thumbnail(0.1f).into(media1);
  604. Glide.with(MainActivity.this).load(medias[1]).thumbnail(0.1f).into(media2);
  605. break;
  606. case 3:
  607. media1.setVisibility(View.VISIBLE);
  608. media2.setVisibility(View.VISIBLE);
  609. media3.setVisibility(View.VISIBLE);
  610. media4.setVisibility(View.GONE);
  611. Glide.with(MainActivity.this).load(medias[0]).thumbnail(0.1f).into(media1);
  612. Glide.with(MainActivity.this).load(medias[1]).thumbnail(0.1f).into(media2);
  613. Glide.with(MainActivity.this).load(medias[2]).thumbnail(0.1f).into(media3);
  614. break;
  615. case 4:
  616. media1.setVisibility(View.VISIBLE);
  617. media2.setVisibility(View.VISIBLE);
  618. media3.setVisibility(View.VISIBLE);
  619. media4.setVisibility(View.VISIBLE);
  620. Glide.with(MainActivity.this).load(medias[0]).thumbnail(0.1f).into(media1);
  621. Glide.with(MainActivity.this).load(medias[1]).thumbnail(0.1f).into(media2);
  622. Glide.with(MainActivity.this).load(medias[2]).thumbnail(0.1f).into(media3);
  623. Glide.with(MainActivity.this).load(medias[3]).thumbnail(0.1f).into(media4);
  624. break;
  625. default:
  626. media1.setVisibility(View.GONE);
  627. media2.setVisibility(View.GONE);
  628. media3.setVisibility(View.GONE);
  629. media4.setVisibility(View.GONE);
  630. break;
  631.  
  632. }
  633.  
  634.  
  635. }else{
  636. media1.setVisibility(View.GONE);
  637. media2.setVisibility(View.GONE);
  638. media3.setVisibility(View.GONE);
  639. media4.setVisibility(View.GONE);
  640.  
  641. }
  642.  
  643. return convertView;
  644. }
  645. }
  646.  
  647. private void replyTimeLine(){
  648. AsyncTask<Void,Void,ResponseList<Status>> task = new AsyncTask<Void,Void,ResponseList<Status>>(){
  649.  
  650. @Override
  651. protected ResponseList<twitter4j.Status> doInBackground(Void... arg0) {
  652. // TODO Auto-generated method stub
  653. try{
  654. Paging paging = new Paging();
  655. paging.setCount(10);
  656. return mTwitter.getMentionsTimeline(paging);
  657. }catch(TwitterException e){
  658. e.printStackTrace();
  659. }
  660. return null;
  661. }
  662.  
  663. @Override
  664. protected void onPostExecute(ResponseList<twitter4j.Status> result) {
  665. if (result != null) {
  666. mAdapter.clear();
  667. for (twitter4j.Status status : result) {
  668. mAdapter.add(status);
  669. }
  670. getListView().setSelection(0);
  671.  
  672. } else {
  673. showToast("自分宛ての返信が取得できませんでした。。。");
  674.  
  675. }
  676. }
  677. };
  678. task.execute();
  679.  
  680. }
  681.  
  682. //timeline
  683. private void reloadTimeLine() {
  684.  
  685.  
  686. AsyncTask<Void, Void, List<twitter4j.Status>> task = new AsyncTask<Void, Void, List<twitter4j.Status>>() {
  687. @Override
  688. protected void onPreExecute() {
  689. //タスク開始
  690. Log.d("TAG_ASYNCTASK", "onPreExecute");
  691. // プログレスダイアログの設定
  692. waitDialog = new ProgressDialog(MainActivity.this);
  693. // プログレスダイアログのメッセージを設定します
  694. waitDialog.setMessage("NOW LOADING...");
  695. // 円スタイル(くるくる回るタイプ)に設定します
  696. waitDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  697. waitDialog.setIndeterminate(true);
  698. // プログレスダイアログを表示
  699. waitDialog.show();
  700.  
  701.  
  702. }
  703.  
  704. @Override
  705. protected List<twitter4j.Status> doInBackground(Void... params) {
  706. /*try {
  707. return mTwitter.getHomeTimeline();
  708. } catch (TwitterException e) {
  709. // TODO 自動生成された catch ブロック
  710. e.printStackTrace();
  711. return null;
  712. }*/
  713.  
  714.  
  715. int page = 1;
  716. ResponseList<twitter4j.Status> tl = null;
  717. int total = 0;
  718.  
  719.  
  720. while (page<3) {
  721. Paging paging = new Paging(page++,COUNT_MAX);
  722. try {
  723. Thread.sleep(50);
  724. if (tl == null) {
  725. tl = mTwitter.getHomeTimeline(paging);
  726. } else {
  727. // 現在のトータル数を保持
  728. total = tl.size();
  729.  
  730. tl.addAll(mTwitter.getHomeTimeline(paging));
  731. }
  732. // 全部取得出来たら終了
  733. if (tl.size() == total) {
  734. break;
  735. }
  736.  
  737. } catch (TwitterException e) {
  738. // APIのキャパオーバーじゃなければ続行
  739. if (RATE_LIMITED_STATUS_CODE != e.getStatusCode()) {
  740. continue;
  741. }
  742. e.printStackTrace();
  743. break;
  744. } catch (InterruptedException e) {
  745. // TODO 自動生成された catch ブロック
  746. e.printStackTrace();
  747. }
  748.  
  749. }
  750. return tl;
  751.  
  752.  
  753.  
  754. }
  755.  
  756. @Override
  757. protected void onPostExecute(List<twitter4j.Status> result) {
  758.  
  759. if (result != null) {
  760. if (waitDialog.isShowing()){waitDialog.dismiss();}
  761. mAdapter.clear();
  762. for (twitter4j.Status status : result) {
  763. mAdapter.add(status);
  764. }
  765. getListView().setSelection(0);
  766.  
  767.  
  768. } else {
  769. showToast("タイムラインの取得に失敗しました。。。");
  770.  
  771. }
  772. }
  773. };
  774. task.execute();
  775. }
  776.  
  777.  
  778.  
  779.  
  780.  
  781. private void showToast(String text) {
  782. Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
  783. }
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790. }
Add Comment
Please, Sign In to add comment