2013-08-18 2 views
2

Я работал с Фрагментом раньше, поэтому у меня есть 5 фрагментов, которые соответствуют 5 вкладкам в ViewPagerIndicator, но как я могу заполнить каждую вкладку? Вот пример фрагмента у меня есть:Как заполнить ViewPagerIndicator?

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     viewta = inflater.inflate(R.layout.agridviewxml, container, false); 
} 

А вот как мои ViewPagerIndicator работы:

private static final String[] CONTENT = new String[] { "Samsung", "HTC", 
      "LG", "Sony", "Search" }; 

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

     FragmentPagerAdapter adapter = new GoogleMusicAdapter(
       getSupportFragmentManager()); 

     ViewPager pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(adapter); 

     TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator); 
     indicator.setViewPager(pager); 
    } 

    class GoogleMusicAdapter extends FragmentPagerAdapter { 
     public GoogleMusicAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return TestFragment.newInstance(CONTENT[position % CONTENT.length]); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return CONTENT[position % CONTENT.length].toUpperCase(); 
     } 

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

Любая идея или предложения ?? БЛАГОДАРЯ ALOT

Каждая вкладка пуста, я хочу, чтобы заполнить его (заполнить его) с данными: enter image description here

+1

Что вы подразумеваете под населением? – Pavlos

+0

@Pavlos проверить мое редактирование –

+0

Какие данные вам нужны? Ваш собственный макет, список, некоторый текст или что? – Pavlos

ответ

0

Вам нужно написать TestFragment, которая показывает нужный вам интерфейс.

Например, чтобы иметь «фрагмент, содержащий ListView с пользовательским адаптером», вы можете иметь TestFragment расширить ListFragment и заполнить адаптер в способе, как onActivityCreated().

+0

У меня уже есть 5 фрагментов. Но как я могу соединить каждую вкладку с фрагментом без написания TestFragment –

+0

@KingOmar: «У меня уже есть 5 фрагментов» - не в соответствии с кодом в вашем вопросе. «Но как я могу подключить каждую вкладку с фрагментом без написания тестового фрагмента» - замените метод 'getItem()' в вашем «FragmentPagerAdapter» чем-то другим, например 'switch', который возвращает правильный фрагмент, основанный на позиции. – CommonsWare

+0

СПАСИБО! ЧТО КОД РАБОТА: переключателя (положение) { \t \t \t случай 0: \t \t \t \t возвратных новый SamsungLB(); \t \t \t Случай 1: \t \t \t \t возвращение новый HTCLB(); \t \t \t Случай 2: \t \t \t \t возвращение новый LGLB(); \t \t \t случай 3: \t \t \t \t возвращение новый SonyLB(); \t \t \t случай 4: \t \t \t \t возвращение новый SearchLB(); \t \t \t} –

0

ли что-то вроде следующего, чтобы соединить язычки с Fragments:

mTabsAdapter = new TabsAdapter(this, mViewPager); 

    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.monday)), 
      Monday.class, packBundle); 
    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.tuesday)), 
      Tuesday.class, packBundle); 
    mTabsAdapter.addTab(
      bar.newTab().setText(getString(R.string.wednesday)), 
      Wednesday.class, packBundle); 
    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.thursday)), 
      Thursday.class, packBundle); 
    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.friday)), 
      Friday.class, packBundle); 

Где бар мой ActionBar и Monday.class и т.д. мои фрагменты. packBundle в конце - это дополнительные, которые я отправляю каждому фрагменту для личного использования! My TabsAdapter - это ваш собственный GoogleMusicAdapter! Измените это соответственно!

метод AddTab:

public void addTab(ActionBar.Tab tab,Class<?> clss,Bundle args) 
0

Вам нужно два класса в вашем проекте.

  1. TabsAdapter который продлит FragmentPagerAdapter реализует OnPageChangeListener, TabListener
  2. Простой класс, который будет распространяться фрагмент. В основном это будет содержать фрагмент для загрузки.

В классе TabsAdapter вам нужно передать все данные, как то, что все классы, которые вы должны загрузить и заголовок вкладки, как

public TabsAdapter(SherlockFragmentActivity fa, ViewPager vPager) { 
    // TODO Auto-generated constructor stub 
    super(fa.getSupportFragmentManager()); 
    context=fa; 
    ab=fa.getSupportActionBar(); 
    mvPager=vPager; 
    mvPager.setAdapter(this); 
    mvPager.setOnPageChangeListener(this); 


} 

добавить еще один метод к классу TabsAdapter который добавит вкладки в ваш ViewPager

public void addTab(ActionBar.Tab tab,Class<?> clss,Bundle args){ 
    TabInfo info=new TabInfo(clss, args); 
    tab.setTag(info); 
    tab.setTabListener(this); 
    mtabs.add(info); 
    ab.addTab(tab); 
    notifyDataSetChanged(); 
} 

и от значений активности пропусков, как:

adap=new TabsAdapter(this,vPager); 
    adap.addTab(ab.newTab().setText("title of tab"), Fragment_1.class,null); 
    vPager.setAdapter(adap); 

Теперь настройте свой класс tabsadapter и используйте методы переопределения в соответствии с вашими потребностями. Надеюсь, этот небольшой подсказку вам поможет.