【发布时间】:2019-12-02 12:54:05
【问题描述】:
我有一个消息应用程序,用户可以在应用程序内发送语音消息。当用户播放语音消息时,我将该消息的进度条更新为其他聊天应用程序。当我更新进度条时,我每 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());
}
});
}
我的暂停按钮不起作用,因为在播放语音消息时我正在快速调用 notifyDataSetChanged 以获得进度条。
【问题讨论】:
-
用
notifyDataSetChanged代替notifyItemChanged(int position) -
是的,它奏效了。如果您想添加作为答案,我可以接受。
标签: android android-recyclerview