обновить определенный элемент в 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.