2016-01-20 4 views
1

Я знаю, что есть несколько вопросов о бесконечном пейджинге, но у меня все еще есть трудности с тем, чтобы любой из них работал. (Я работаю в Android Studio)Получение InfiniteViewPager для работы

Я пытаюсь запустить InfiniteViewPager с https://github.com/antonyt/InfiniteViewPager.

Я пытаюсь получить эту работу, чтобы я мог пронести по 4 страницам/фрагментам (A, B, C, D), с функциональностью для правильного прокрутки на D, чтобы вернуться в A, и левым салфеткой на A, чтобы вернуться к D.

Я импортировал классы InfinitePagerAdapter и InfiniteViewPager Java и добавил InfiniteViewPager к моему файлу activity_main.xml.

Однако я застрял там, где мне нужно «Обернуть существующий PagerAdapter с помощью InfinitePagerAdapter».

Вот мой код:

public class MainActivity extends AppCompatActivity { 

    PagerAdapter mPagerAdapter; 
    ViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mPagerAdapter = new PagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mPagerAdapter); 
     //Cannot resolve symbol adapter 
     PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter); 
     mViewPager.setAdapter(wrappedAdapter); 

     mViewPager.setOffscreenPageLimit(5); 
    } 

    public class PagerAdapter extends FragmentStatePagerAdapter { 

     public PagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      //getItem is called to instantiate the fragment for the given page. 
      switch (position) { 

       default: 
        return Fragment1.newInstance(); 
       case 1: 
        return Fragment2.newInstance(); 
       case 2: 
        return Fragment3.newInstance(); 
       case 3: 
        return Fragment4.newInstance(); 
      } 
     } 

     @Override 
     public int getCount() { 
      // Show number of total pages. 
      return 4; 
     } 
    } 
} 

Я не совсем уверен, что я должен заменить adapter с, или если он должен быть вынут из других классов Java. Кроме того, есть что-то еще, что мне нужно добавить/изменить, чтобы заставить это работать?

+0

взглянуть на демо здесь, и вы увидите ссылку в коде, где он говорит (//wrap pager, чтобы обеспечить бесконечный пейджинг с оберткой) - https://github.com/antonyt/InfiniteViewPager/tree/master/demo/src/main/java/com/antonyt/infiniteviewpager – Tasos

+0

@Tasos спасибо, Посмотрите сейчас и сообщите, как это происходит - знали кодирование и не были слишком уверены в том, как использовать Github. –

+0

@Tasos, поэтому я понимаю, что демо использует позиции, чтобы распознавать, какой вид отображать после каждого прокрутки. Демо создает новый экземпляр ColourFragment, который затем изменяется в зависимости от позиции. Как я могу изменить это на создание нового экземпляра разных фрагментов, основанных на позиции? Благодарю. –

ответ

0

Я получил это работает после того, как немного возиться с демо - код ниже:

public class MainActivity extends FragmentActivity { 

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


     PagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager()) { 

      @Override 
      public int getCount() { 
       return 4; 
      } 

      @Override 
      public Fragment getItem(int position) { 
       final ArrayList<Fragment> fragmentPosition = new ArrayList<>(); 
       fragmentPosition.add(new Fragment1()); 
       fragmentPosition.add(new Fragment2()); 
       fragmentPosition.add(new Fragment3()); 
       fragmentPosition.add(new Fragment4()); 
       Fragment fragment = fragmentPosition.get(position); 
       Bundle args = new Bundle(); 
       fragment.setArguments(args); 
       return fragment; 
      } 
     }; 

     // wrap pager to provide infinite paging with wrap-around 
     PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter); 

     // actually an InfiniteViewPager 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     viewPager.setAdapter(wrappedAdapter); 

    } 
} 
Смежные вопросы