我有一个消息传递应用程序,用户可以在该应用程序内发送语音消息。当用户播放语音消息时,我正在将该消息的进度栏更新为其他聊天应用程序。在更新进度条时,我每隔50毫秒调用一次notifyDataSetChanged
,并且注意到当我快速调用它时,我的recyclerview的onclick方法在停止调用notifyDataSetChanged
之前不起作用。我该如何解决这个问题?
同样的问题在这里:RecyclerView item onClick not working while being updated rapidly
我的viewHolder
public class VoiceMessageViewHolder extends RecyclerView.ViewHolder {
public VoiceMessageViewHolder(@NonNull View itemView, OnVoiceMessageListener onVoiceMessageListener) {
super(itemView);
this.onVoiceMessageListener = onVoiceMessageListener;
playButton = itemView.findViewById(R.id.play_button);
pauseButton = itemView.findViewById(R.id.pause_button);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onVoiceMessageListener.onVoiceMessagePlayClick(getAdapterPosition());
}
});
pauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onVoiceMessageListener.onVoiceMessagePauseClick(getAdapterPosition());
Log.d(TAG, "onClick: pause basılıd" + System.currentTimeMillis());
}
});
}
我的暂停按钮不起作用,因为在播放语音消息时,我正在快速调用ProgressBar的notifyDataSetChanged。
答案 0 :(得分:1)
代替使用
notifyDataSetChanged
尝试使用
notifyItemChanged(int position)
NB: notifyDataSetChanged
是结构更改事件,而notifyItemChanged
是项目更改事件