次FragmentStatePagerAdapter
の内部クラスがあります。
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
/*
* Here we are going to return the correct type of fragment for each
* of the pages
*/
switch(position){
case 0:
return MainListFragment.init(position);
case 1:
return MainListFragment.init(position);
case 2:
return MainListFragment.init(position);
default:
return MainListFragment.init(position);
}
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
//breakpoint set here
switch (position) {
case 0:
return getString(R.string.title_main_feed).toUpperCase(l);
case 1:
return getString(R.string.title_settings).toUpperCase(l);
case 2:
return getString(R.string.title_about).toUpperCase(l);
}
return null;
}
}
そして、いくつかの非常に奇妙な動作があります。デバッガーで何が起こっているのかにいくつかのブレークポイントを設定しました。これが私が見つけたものです。アプリを初めて起動すると、ブレークポイントに 1 回ヒットし、次に「続行」を押してもう一度ヒットし、基本的に、アプリが読み込まれる前に switch ステートメントを 2 回押します。アプリが読み込まれると、2 ページ目 (ページ 1、または中央) のみにリスト データが表示されます。
もう 1 つの奇妙な点は、スクロールしてもposition
変数が正しくないことです。0 から開始して 1 に移動すると、ブレークポイントにヒットし、位置が 2 になり、2 にスクロールすると、ブレークポイントにヒットしません。1 に戻り、ブレークポイントにヒットしましたが、位置は 1 ではなく 0 です。
何が起こっているのか、すべてのページでリスト データを取得できない理由について混乱しています。誰かが何が起こっているのかを明確にすることができますか?
基本的に、私がやりたいことは、現在のページに応じて異なるリスト ビューを表示することです。私はこれを正しい方法で行っていますか、それとも別の方法がありますか。