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

标签 android android-recyclerview

我有一个消息传递应用程序,用户可以在该应用程序内发送语音消息。当用户播放语音消息时,我正在像其他聊天应用程序一样更新该消息的进度条。当我更新进度条时,我每 50 毫秒调用一次 notifyDataSetChanged,我注意到当我快速调用它时,我的 recyclerview 的 onclick 方法在停止调用 notifyDataSetChanged 之前不起作用。我该如何解决这个问题?

这里也有同样的问题:RecyclerView item onClick not working while being updated rapidly

我的 View

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)

N.B: notifyDataSetChanged 是结构变化事件,而 notifyItemChanged 是项目变化事件

关于android - Recyclerview 项目 onClick 在更新时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59139345/

相关文章:

android - 这有什么问题吗?它在 5 分钟后没有启动服务..而是仅在 1 分钟后发送

Android - 如果应用程序终止,远程服务也会终止

java - 防止过滤适配器数据时重新加载图像 [Android]

java - Android:反转 RecyclerView 位置

java - Android Rect.intersect() 不工作/没有被使用,对吧?

android - fragment 添加不起作用

android - 在 onCreateViewHolder 和 onBindViewHolder : Progressbar freezes 中实例化时 RecyclerView 花费大量时间

android - 无法在 Kotlin (Android Studio) 中实现 Groupie

android - 错误 : Manifest merger failed : uses-sdk:minSdkVersion 7 cannot be smaller than version 14

android - Gradle 构建失败 : cannot run a program