嗨我有recyclelerView行项目包括一个播放按钮(更改为停止和播放为切换)和播放搜索栏和TextView。
每一行都播放不同的音频。
当我点击相应行的播放按钮时,我可以停止另一行音频.. 解决问题.. 当我正在播放相应行的音频时,前一行的按钮必须存放播放符号(在某种意义上它必须更改状态)请帮助我在单击其他项目时更新其他行的recyclerView
@Override
public void onBindViewHolder(final ViewHolder holder, final int i) {
if (holder.viewType == ROW_TYPE){
// holder.play_button.setImageResource(R.drawable.play_button);
if(i == selected_item){
}
else {
// holder.play_button.setImageResource();
}
JSONObject obj;
String mp3_url = null, caption = null, thumbnail_url = null;
try {
obj = voicesArray.getJSONObject(i);
mp3_url = obj.getString("mp3_url");
caption = obj.getString("caption");
thumbnail_url = obj.getString("thumbnail_url");
} catch (JSONException e) {
e.printStackTrace();
}
holder.list_text.setText(caption);
imageLoader.DisplayImage(thumbnail_url, holder.list_image);
final String finalMp3_url = mp3_url;
holder.play_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selected_item = i;
int ii = holder.getOldPosition();
// holder.play_button.setImageResource();
// updateItem(ii);
if(player != null){
player.reset();
holder.play_button.setImageResource(R.drawable.play_button);
myAudioPlay(holder, finalMp3_url);
}
else {
myAudioPlay(holder,finalMp3_url);
/*if (player == null) {
player = new MediaPlayer();
playAudiFile(finalMp3_url);
holder.play_button.setImageResource(R.drawable.pause_button);
} else if (player.isPlaying()) {
holder.play_button.setImageResource(R.drawable.play_button);
player.stop();
Log.d("player", "" + player);
player.reset();
} else {
holder.play_button.setImageResource(R.drawable.pause_button);
playAudiFile(finalMp3_url);
}*/
}
}
});
}
}
答案 0 :(得分:0)
显然,recyclelerView的目的是回收视图以最小化渲染视图所需的内存使用量,因此在视图中设置图像并不是一个合适的解决方案,他们为您的问题提供了许多解决方案我将选择(伪代码) )在下面给出
bool isPlay=true;
isPlay
accourdingly for(object obj in listOfModels)
if(obj.Id!=idOfthePlayingView)
obj.isPlay=false;
然后通知您的适配器
yourRecyclerAdapterObject.notifyDatasetChanged()