Recyclerview项目onClick在更新时不起作用

时间:2019-12-02 12:54:05

标签: android android-recyclerview

我有一个消息传递应用程序,用户可以在该应用程序内发送语音消息。当用户播放语音消息时,我正在将该消息的进度栏更新为其他聊天应用程序。在更新进度条时,我每隔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。

1 个答案:

答案 0 :(得分:1)

代替使用

notifyDataSetChanged

尝试使用

notifyItemChanged(int position)

NB: notifyDataSetChanged是结构更改事件,而notifyItemChanged是项目更改事件