обновить определенный элемент в viewPager2 одновременно, не затрагивая другие элементы

ИСТОРИЯ:-

Я делаю приложение, такое как Instagram Reels, с viewPager2 с RecyclerViewAdapter, все функции работают нормально,

только одна проблема, с которой я сталкиваюсь прямо сейчас, это когда я нажимаю кнопку комментария, экран комментариев открывается в другом действии, и когда я возвращаюсь к активности барабанов после комментирования или без комментирования,

видео воспроизводится снова и смешивается с текущим звуком, что означает, что notifyItemChanged не работает должным образом в моем случае,

Я просто хочу обновить количество комментариев, не затрагивая все элементы адаптера.

Класс-АдаптерКласс: RecyclerView.Adapter

onClickListener для кнопки комментария

      binding.ivComment.setOnClickListener(View.OnClickListener {
            if (Utility.isOnline(context)) {
                itemClick(post)
            } else {
                val toast: Toast = Toast.makeText(
                    context,
                    R.string.msg_no_internet,
                    Toast.LENGTH_SHORT
                )
                toast.show()
            }
        })

fun itemClick(postList: PostList?) {
    if (Utility.isOnline(context)) {
        val intent = Intent(context, BitesCommentActivity::class.java)
        intent.putExtra(PostList.SENDEXTRA, postList)
        context.startActivity(intent)
    } else {
        val toast: Toast = Toast.makeText(context, R.string.msg_no_internet, Toast.LENGTH_SHORT)
        toast.show()
    }
}

Класс- класс активности

Использование BroadcastReceiver для обновления количества комментариев от CommentActivity

      private val mMessageReceiver: BroadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            val isActivityInForeground = this@BitesSwappableVideosActivity.lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)
            if (!isActivityInForeground) {
                val message = intent.getStringExtra("message")
                val epost_id = intent.extras!!
                    .getLong(Constant.ScreenExtras.EPOST_ID, -1)
                val action = intent.extras!!.getInt(Constant.ScreenExtras.ACTION)

                for (i in fav.indices) {
                    val postList: PostList = fav[i]
                    val updateIndex: Int

                    if (action == Constant.COMMENT) {
                        if (postList.postId == epost_id) {
                            postList.totalComment = postList.totalComment + 1
                            eBiteReels_adapter.notifyItemChanged(i)
                            break
                        }
                    }
                }
            } else {
                val message = intent.getStringExtra("message")
                val epost_id = intent.extras!!
                    .getLong(Constant.ScreenExtras.EPOST_ID, -1)
                val action = intent.extras!!.getInt(Constant.ScreenExtras.ACTION)
                for (i in fav.indices) {
                    val postList: PostList = fav[i]
                    if (action == Constant.COMMENT) {
                        if (postList.postId == epost_id) {
                            postList.totalComment = postList.totalComment + 1
                            eBiteReels_adapter.notifyItemChanged(i)
                            break
                        }
                    }
                }
            }
        }
    }

я пробовал

       eBiteReels_adapter.notifyItemChanged(i)

но это вызывает проблемы с другими элементами, особенно с видеоплеером.

если я удаляю notifyItemChanged из своего кода, он обновляет количество комментариев при перезапуске SwipableVideoActivity.

0 ответов

Другие вопросы по тегам