2015-01-18 2 views
0

Ниже приведен пример PagerAdapter. Можно ли получить фрагменты и добавить их в контейнер вместо того, чтобы писать всю логику в instantiateItem?PagerAdapter с использованием фрагментов

Заранее спасибо

@Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      View view=null; 
      if(position%2==0){ 
       view = activity.getLayoutInflater().inflate(R.layout.pager_item,container, false); 
      }else{ 
       view = activity.getLayoutInflater().inflate(R.layout.pager_item,container, false); 
      } 
      // Add the newly created View to the ViewPager 
      container.addView(view); 

      // Retrieve a TextView from the inflated View, and update it's text 
      TextView title = (TextView) view.findViewById(R.id.item_title); 
      title.setText(tabs[position]); 

      // Return the View 
      return view; 
     } 

ответ

4

Используйте либо FragmentPagerAdapter (для низкого количества страниц, которые будут храниться в памяти) или FragmentStatePagerAdapter (для большого количества страниц, которые будут сохранены, если слишком далеко от текущего экрана). Вам нужно только переопределить getCount() и getItem(int position), которые должны возвращать новый экземпляр фрагмента, основанный на позиции.

Docs, а также примеры использования: http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html

+3

Одна вещь, чтобы иметь в виду, ни с одним из этих адаптеров является то, что они * не * предназначен для обработки движущихся наборов данных. Если вы вставляете или перемещаете элемент, вам необходимо создать новый адаптер (а не только сообщать, что набор данных был изменен). Для других случаев они великолепны. :) – kcoppock

+0

@ kcoppock СПАСИБО! это заводило меня с ума. Я не уверен, как это должно было прийти мне в голову, если вы не положили его туда. – kandinski