質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

0回答

1413閲覧

ViewPagerを用いた場合の、ListViewへの要素追加について

takg

総合スコア125

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2017/08/28 12:32

リンク内容を参考に、ViewPagerを用いて、タブで複数切り替えが可能なタイムラインを実装しようとしています。

個々のタイムラインについては、TwitterライクなUIをイメージしているので、リンクのGridViewFragmentをListViewFragmentに変更しています。さらに、ListViewの下端到達時に追加のロードが行われるよう、スクロールリスナを設置しています。
現状の問題として、Tab1のフラグメントにおいて追加ロードが行われたとき、表示されていない他のTab2,3においても同時にロードが行われてしまいます。現在表示されているフラグメントにのみ要素の追加を行いたい場合、どのような加筆が必要でしょうか?
宜しくお願いします。

java

1public class ListViewFragment extends Fragment { 2 3 private AppListAdapter appListAdapter; 4 5 @Override 6 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 7 8 ListView listView = new ListView(getActivity()); 9 10 @SuppressWarnings("unchecked") 11 ArrayList<App> list = (ArrayList<App>) getArguments().get("list"); 12 13 //アダプタをセット 14 appListAdapter = new AppListAdapter(getActivity(), R.layout.item_app, list); 15 listView.setAdapter(appListAdapter); 16 17 //スクロールリスナ 18 listView.setOnScrollListener(new AbsListView.OnScrollListener() { 19 @Override 20 public void onScrollStateChanged(AbsListView view, int scrollState) { 21 } 22 23 @Override 24 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 25 //スクロール完了時 26 if (firstVisibleItem != 0 && (totalItemCount - visibleItemCount) == firstVisibleItem) { 27 ArrayList<App> appList = new ArrayList<App>(); 28 for (int i = 0; i < 10; i++) { 29 App item = new App(); 30 item.title = "App" + i; 31 item.description = "This app is " + i + "."; 32 item.company = "Company" + i; 33 item.rate = (float) Math.random() * 5; 34 item.value = (int) Math.floor((Math.random() * (500 - 80 + 1))) + 80; 35 appList.add(item); 36 } 37 38 appListAdapter.addAll(appList); 39 40 } 41 } 42 }); 43 44 return listView; 45 } 46 47} 48

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問