0

私はViewPagerがうまく動作しますが、少し上手くしたいと思います。ViewPagerのオーダー/タブ名をより適切にモジュール化する方法

は今の私のPagerAdapterクラスでは、私はswitchステートメントを使用しgetItem方法で:

tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
tabLayout.addTab(tabLayout.newTab().setText("Chicken")); 
tabLayout.addTab(tabLayout.newTab().setText("Fish")); 
... 
:私の活動のクラスで

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      TabFragmentChicken tabChicken = new TabFragmentChicken(); 
      return tabChicken; 
     case 1: 
      TabFragmentFish tabFish = new TabFragmentFish(); 
      return tabFish; 
     ... 

そしてオーバー、私はそうのように、タブ名を設定します

これをモジュール化する方法はありますか?たとえば、タブの順序を変更したい場合は、switch文とタブ名の両方を変更する必要があります。私は1つのことを更新する必要があるだけで、スイッチを気にする必要はない/タブのテキストの変更を追加するために、私はそれをすべて1か所に保つために使うことができる別のクラスまたは構造がありますか?

答えて

0

タイトルとフラグメントを保持するカスタムオブジェクトを作成し、アダプタ内でこのオブジェクトのリストを使用することができます。これを実装する小さな方法があります:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import com.chahinemouhamad.parrrot.home.recent.RecentFragment; 

public class HomePagerAdapter extends FragmentPagerAdapter { 
    private final PagerFragment[] pagerFragments; 

    public HomePagerAdapter(final FragmentManager fm) { 
    super(fm); 

    pagerFragments = new PagerFragment[] { 
     new PagerFragment("item 1", RecentFragment.newInstance()), 
     new PagerFragment("item 2", RecentFragment.newInstance()) 
    }; 
    } 

    @Override public Fragment getItem(final int position) { 
    return pagerFragments[position].fragment; 
    } 

    @Override public int getCount() { 
    return pagerFragments.length; 
    } 

    @Override public CharSequence getPageTitle(final int position) { 
    return pagerFragments[position].title; 
    } 

    class PagerFragment { 
    public final String title; 
    public final Fragment fragment; 

    public PagerFragment(String title, Fragment fragment) { 
     this.title = title; 
     this.fragment = fragment; 
    } 
    } 
} 
関連する問題