0

2 つの文字列配列を受け取るクラスがあります。これらの配列には、各ファイルのファイル名とタイトルが含まれています。ViewPager を設定していますが、これらの配列はアプリのセクションによって変わる可能性があるため、switch ステートメントを使用できません。ViewPager には、アセット フォルダー内のファイルからデータを収集するフラグメントが表示されます。

シナリオ A:

  • fileString[] の長さは 4 です
  • fileTitleString[] の長さは 4 です

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = new myFragment(FILE_PATH, fileString[SELECTION]);
    
    switch (position) {
    case 0:
        fragment = new myFragment(FILE_PATH, fileString[0]);
        break;
    case 1:
        fragment = new myFragment(FILE_PATH, fileString[1]);
        break;
    case 2:
        fragment = new myFragment(FILE_PATH, fileString[2]);
                    break;
    case 3:
        fragment = new myFragment(FILE_PATH, fileString[3]);
                    break;
    }
    
    return fragment;
    }
    
    @Override
    public CharSequence getPageTitle(int position) {
    String title = "";
    
    switch (position) {
    case 0:
        title = "    " + fileTitleString[0] + "    ";
        break;
    case 1:
        title = "    " + fileTitleString[1] + "    ";
        break;
    case 2:
        title = "    " + fileTitleString[2] + "    ";
        break;
    case 3:
        title = "    " + fileTitleString[3] + "    ";
        break;
    }
    
    return title;
    

    }

シナリオ B: - fileString[] の長さは 5 - fileTitleString[] の長さは 5

switch 句が行うことはすべて新しいフラグメントをセットアップすることですが、ViewPager はフラグメント間をスワイプできるように前後を知る必要があることを知っています。

4

2 に答える 2

0

ご覧のとおり、これは getItem メソッドでのみ行います。これはスイッチを交換します

@Override
public Fragment getItem(int position) {
    Fragment fragment = new myFragment(FILE_PATH, fileString[0]);

    if(position>=0&&position<fileString.length){
        fragment= new myFragment(FILE_PATH, fileString[position]);
    }
    return fragment;
}

そして getPageTitle で同じ

@Override
public CharSequence getPageTitle(int position) {
    String title = "";
    if(position>=0&&position<fileTitleString.length){
        title = "    " + fileTitleString[postition] + "    ";
    }

    return title;
}
于 2013-07-28T18:00:06.647 に答える
0

switchステートメントをよりコンパクトなコードに置き換えたいだけの場合は、これでうまくいくはずです。

@Override
public Fragment getItem(int position) {
    return new myFragment(FILE_PATH,
         fileString[position >= 0 && position <= 3 ? position : SELECTION]
    );
}

@Override
public CharSequence getPageTitle(int position) {
    return position >= 0 && position <= 3
        ? String.format("    %1$s    ", fileTitleString[position])
        : "";
}

and (それぞれ) の定数の代わりに and (それぞれ)をfileString.length使用したい場合があります。fileTitleString.length3getItemgetPageTitle

于 2013-07-28T18:05:21.920 に答える