我想使用ViewPager
来浏览我的Media Player
中的歌曲(像Android的SoundCloud应用程序一样前进或后退)。
我创建了一个片段,我inflate
并设置内部信息,如歌曲名称,作者等。
我已经在StackOverflow上阅读了有关ViewPager
显示错误项目Viewpager shows wrong page和Android Viewpager show wrong pages以及更多内容的一些主题,但我没有固定数量的{{ 1}}用于XML
。
我的数据显示在ViewPager
,当我按下索引4上的项目时,例如我调用以下方法:
RecyclerView
因此 mPager.setCurrentItem(position);
设置为位置4。
mPager
但在 @Override
public Fragment getItem(int position) {
Log.i("TEST","Returnin a fragment on position "+position);
return fragment = new MusicSliderFragment();
}
发生变化时,我会得到以下输出:
Adapter
当我的应用程序启动时,我得到以下输出:
02-23 10:39:57.131 7599-7599/************** I/TEST: Returning a fragment on position 4
02-23 10:39:57.131 7599-7599/************** I/TEST: Returning a fragment on position 3
02-23 10:39:57.131 7599-7599/************** I/TEST: Returning a fragment on position 5
主要问题是当我第一次打开应用程序并将歌曲设置在位置4时,片段信息会显示在下一个片段中。
有什么方法可以解决这个问题?
适配器类:
I/TEST: Returning a fragment on position 0
I/TEST: Returning a fragment on position 1
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
private MusicSliderFragment fragment;
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Log.i("TEST","Returnin a fragment on position "+position);
return fragment = new MusicSliderFragment();
}
@Override
public int getCount() {
return NUM_PAGES;
}
public void updateSongName(String name) {
fragment.setSongName(name);
}
}
RecyclerView
:
Listener
答案 0 :(得分:2)
查看寻呼机可以在您选择当前时加载邻居片段。方法setOffscreenPageLimit()定义要预加载的邻居数。 onPageSelected(int position)应该正常工作并返回当前项。
答案 1 :(得分:0)
如果要加载第四个片段,则需要设置位置3,Viewpager索引从零开始。
mPager.setCurrentItem(3); //Load the 4th fragment according to you.(0-3)