
这是我的问题:
示例1(这很好):
(对于适配器位置1),用户点击播放符号并播放该适配器位置的音乐,符号变为停止符号,然后点击停止符号,音乐停止,符号变回准备启动的播放符号音乐又来了.
例2(这是问题)
(对于适配器位置1),并且符号变为停止符号.如果没有再按下该按钮,他们就会点击播放符号(适配器位置3),所以现在他们正在尝试同时播放位置1和3上的歌曲.我已经修复了两首歌曲同时播放,以便当按下第二首歌曲时,播放的媒体被重置,源歌曲文件被改变为新歌曲(一次只播放一首歌曲).
即使媒体播放器表现得如此,问题仍然存在.媒体播放器在主要活动中受到控制.播放/停止按钮(imagevIEw)图像在适配器视图中更改,当同时单击多首歌曲时,我无法改变播放/停止符号的方法.
此图像显示了按下歌曲1和歌曲3的示例.现在只播放第3首歌曲,但图像仍然显示两首歌曲同时播放.
这是我的视图持有者,我处理更改播放/停止图像并发送歌曲点击回调:
class AddVIDeoAudioVIEwHolder extends RecyclerVIEw.VIEwHolder{ ImageVIEw Playbutton; button AddAudiobutton; TextVIEw Title; public AddVIDeoAudioVIEwHolder(VIEw itemVIEw) { super(itemVIEw); Playbutton = (ImageVIEw) itemVIEw.findVIEwByID(R.ID.PlayStopAudioDemo); Playbutton.setTag(1); Playbutton.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { int PlayStopbuttonState = (int) Playbutton.getTag(); if (PlayStopbuttonState == 1) { mVIDeoAudioCallbacks.onClick(100 + getAdapterposition()); Playbutton.setimageResource(R.drawable.playstop); Playbutton.setTag(2); } else { mVIDeoAudioCallbacks.onClick(200 + getAdapterposition()); Playbutton.setimageResource(R.drawable.playarrow); Playbutton.setTag(1); } } }); 这是我在主要活动中处理两首歌曲播放情况的方法:
public voID PlaySong (int SongNumber,int ObjectInt){ if (mp == null) { mp = new MediaPlayer(); }else{ mp.reset(); } try { mp.setDataSource(this,Uri.parse("androID.resource://com.example.nick.accountable/" + SongArray[SongNumber])); } catch (IOException e) { e.printstacktrace(); } try { mp.prepare(); } catch (IOException e) { e.printstacktrace(); } mp.start();} 所以我的问题是我可以在视图持有者或主活动中添加一些代码,这些代码可以更改除当前适配器位置之外的所有其他视图.即如果单击歌曲编号3进行播放,请将图像设置为位置1-2& 4-10没有比赛或者有更好的方法.
谢谢你的帮助
尼古拉斯
int mCurrentPlayingposition = -1; // if -1 nothing is playing
在点击监听器的播放按钮中,执行此 *** 作
Playbutton.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { int PlayStopbuttonState = (int) Playbutton.getTag(); int prevIoUsposition = mCurrentPlayingposition; if (PlayStopbuttonState == 1) { mCurrentPlayingposition = getAdapterposition(); mVIDeoAudioCallbacks.onClick(100 + getAdapterposition()); Playbutton.setimageResource(R.drawable.playstop); Playbutton.setTag(2); } else { mCurrentPlayingposition = -1; // nothing wil be played after hitting stop mVIDeoAudioCallbacks.onClick(200 + getAdapterposition()); Playbutton.setimageResource(R.drawable.playarrow); Playbutton.setTag(1); } if(prevIoUsposition != -1) notifyItemChanged(prevIoUsposition); } }); 在您的onBindVIEwHolder中执行以下 *** 作
@OverrIDepublic voID onBindVIEwHolder(AddVIDeoAudioVIEwHolder holder,int position) { if(mCurrentPlayingposition == position ){ // display stop icon } else { // display play icon }} 总结 以上是内存溢出为你收集整理的android – Recyclerview视图可以更改其他适配器位置(不是当前位置)的视图?全部内容,希望文章能够帮你解决android – Recyclerview视图可以更改其他适配器位置(不是当前位置)的视图?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)