视频播放用的IjkPlayer,Adapter用的是BRVAH.我现在点击每一个item都会播放,如何点击一个item的播放让另一个暂停呢?我用SharedPreferences保存上一条播放item的position,然后点击新的item就让上一条position的item暂停,但是这样偶尔也会两个item都在播放
这是RecyclerView的item点击事件代码:
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
if (view.getId() == R.id.play_icon) {
videoPlay(position);
} else if (view.getId() == R.id.app_video_play) {
Toast.makeText(mContext, "点击了底部栏播放按钮", Toast.LENGTH_SHORT).show();
}
}
private void videoPlay(int position) {
HomeListBean bean = mDatas.get(position);
List<IjkVideoView> list = homeAdapter.list;
IjkVideoView ijkVideoView = list.get(position);
final View ijkVideoViewParent = (View) ijkVideoView.getParent();
player = new PlayerView(getActivity(), ijkVideoViewParent) {
@Override
public PlayerView toggleProcessDurationOrientation() {
hideSteam(getScreenOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
return setProcessDurationOrientation(getScreenOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ? PlayStateParams.PROCESS_PORTRAIT : PlayStateParams.PROCESS_LANDSCAPE);
}
};
/**虚拟按键的隐藏方法*/
ijkVideoViewParent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//比较Activity根布局与当前布局的大小
int heightDiff = ijkVideoViewParent.getRootView().getHeight() - ijkVideoViewParent.getHeight();
if (heightDiff > 100) {
//大小超过100时,一般为显示虚拟键盘事件
ijkVideoViewParent.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
} else {
//大小小于100时,为不显示虚拟键盘或虚拟键盘隐藏
ijkVideoViewParent.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
}
});
/**常亮*/
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "liveTAG");
wakeLock.acquire();
list = new ArrayList<>();
player.setProcessDurationOrientation(PlayStateParams.PROCESS_PORTRAIT)
.setScaleType(PlayStateParams.fillparent)
.forbidTouch(false)
.hideSteam(true)
.hideCenterPlayer(true)
.setPlaySource(bean.getVideoUrl())
.hideRotation(true)
.hideHideTopBar(true)
.startPlay();
boolean isPlaying = ijkVideoView.isPlaying();//视频正在播放
// if(isPlaying){
// Toast.makeText(mContext, "item"+position+"正在播放", Toast.LENGTH_SHORT).show();
// }
}
你设置一个flag就行了,播放哪个就放flag等于哪个position,然后每次播放notifyDataSetChanged一下,你那个应该也可以,应该是少了notifyDataSetChanged