让 InfiniteViewPager 工作
Getting InfiniteViewPager to Work
我知道有几个关于无限分页的问题,但我仍然无法解决其中的任何问题。 (我在 Android 工作室工作)
我正在尝试从 https://github.com/antonyt/InfiniteViewPager 到 运行 获取 InfiniteViewPager。
我正在尝试让它工作,以便我能够滑动 4 pages/fragments(A、B、C、D),并具有在 D 上向右滑动到 return 的功能到 A,然后在 A 上向左滑动到 return 到 D。
我导入了 InfinitePagerAdapter 和 InfiniteViewPager Java 类,并将 InfiniteViewPager 添加到我的 activity_main.xml
文件中。
但是,我在需要的地方卡住了 "Wrap your existing PagerAdapter with the 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 类 中删除它。另外还有什么我需要 add/change 才能让它工作吗?
在对演示进行了一些修改后,我已经开始工作了 - 代码如下:
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);
}
}
我知道有几个关于无限分页的问题,但我仍然无法解决其中的任何问题。 (我在 Android 工作室工作)
我正在尝试从 https://github.com/antonyt/InfiniteViewPager 到 运行 获取 InfiniteViewPager。
我正在尝试让它工作,以便我能够滑动 4 pages/fragments(A、B、C、D),并具有在 D 上向右滑动到 return 的功能到 A,然后在 A 上向左滑动到 return 到 D。
我导入了 InfinitePagerAdapter 和 InfiniteViewPager Java 类,并将 InfiniteViewPager 添加到我的 activity_main.xml
文件中。
但是,我在需要的地方卡住了 "Wrap your existing PagerAdapter with the 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 类 中删除它。另外还有什么我需要 add/change 才能让它工作吗?
在对演示进行了一些修改后,我已经开始工作了 - 代码如下:
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);
}
}