2017-08-16 3 views
0

私はスワイプしながら、すべてのタブがありFragment Sに関連付けられているので、私はFragmentの動的JSON(REST API)で与えられたタブの数を使用して+タブを作成することができ、Rest APIのを使用して、タブを動的n数を作成したいですまたは個別にすべてを作成する必要がありますか?タブとその関連するフラグメントを動的に作成するにはどうすればいいですか?

enter image description here

答えて

0

はい、次のことができます。

<android.support.design.widget.TabLayout 
       android:id="@+id/htab_tabs" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:layout_gravity="bottom" 
       android:background="@color/colorDivider" 
       app:tabIndicatorColor="@android:color/white" /> 

<android.support.v4.view.ViewPager 
     android:id="@+id/htab_viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

public class MainActivity extends AppCompatActivity { 
    private ViewPager viewPager; 
    private TabLayout tabLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     viewPager = (ViewPager) findViewById(R.id.htab_viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.htab_tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     //jsonResArray get from web service 
     for (int i = 0; i < jsonResArray.size(); i++) { 
      adapter.addFrag(new NewFragment(jsonResArray.get(i)), jsonResArray.get(i).getName()); 
     } 
     viewPager.setAdapter(adapter); 
    } 

    static class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List <Fragment> mFragmentList = new ArrayList < >(); 
     private final List <String> mFragmentTitleList = new ArrayList < >(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFrag(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 
} 
関連する問題