【已解决】 喜马拉雅项目中setPlayList后,viewpage中的position值不对
- 在跟着博主视频写代码的时候发现一个问题,先贴代码,这个是ViewPage滑动监听:
mTrackImage.addOnPageChangeListener(this);
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
LogUtil.d(TAG,"position: " + position);
if (mPlayerPresenter != null && isUserTouchPage == true) {
mPlayerPresenter.playByIndex(position);
}
isUserTouchPage = false;
}
@Override
public void onPageScrollStateChanged(int state) {
}
2.这是初始化和切换播放列表更新position的代码:
@Override
public void onTrackUpdate(Track track,int playIndex) {
mTrackView.setText(track.getTrackTitle());
LogUtil.d(TAG,"playIndex: " + playIndex);
mTrackImage.setCurrentItem(playIndex,true);
//设置滑动界面监听
mTrackImage.addOnPageChangeListener(this);
mPobWindow.setListPosition(playIndex);
LogUtil.d(TAG,track.getTrackTitle());
}
3.如果初始的position值是0时,滑动页面没有问题,但如果position初始值是其他值的时候,比如:

我点击第4首歌曲的时候进去初始化的值是正常的,日志如下:
2020-09-26 23:35:28.145 13591-13591/com.huanglj.himalaya D/[com.huanglj.himalaya] PlayerActivity: playIndex: 4
但这个时候viewpage没有监听到,也没有相关的日志产生。
现在开始滑动界面,viewpage日志如下:
2020-09-26 23:40:12.011 13591-13591/com.huanglj.himalaya D/[com.huanglj.himalaya] PlayerActivity: position: 1
2020-09-26 23:40:12.042 13591-13591/com.huanglj.himalaya D/[com.huanglj.himalaya] PlayerActivity: playIndex: 1
所以说当播放器初始化的时候,viewpage是没有监听的,viewpage的position是默认为0的;但如果我使用切换歌曲的话,滑动监听又是正常的了。
所以。。。。。
有没有大佬能帮忙解决一下,我搞不定啊 QvQ...
但这个时候viewpage没有监听到,也没有相关的日志产生。
ViewPager凭什么呢?
你播放器不是要通知ViewPager发生改变吗?
但这里面要注意一个嵌套的问题。如果是播放器通知ViewPager切换,那么ViewPager的onPagerChange就不要去切歌。
如果是人工滑动的,就切歌。