Время не обновляется в RecyclerView с использованием таймера обратного отсчетаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Время не обновляется в RecyclerView с использованием таймера обратного отсчета

Сообщение Anonymous »


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

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

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

Вот код:
класс MyBidAdapter( частный прослушиватель val: OnItemClickListener, частный вал userId: Int, ) : ListAdapter(DiffCallback()) { частный val countdownTimerMap: MutableMap = mutableMapOf() переопределить удовольствие onCreateViewHolder (родитель: ViewGroup, viewType: Int): MyBidViewHolder { привязка val = ItemBidBinding.inflate(LayoutInflater.from(parent.context), родительский, false) вернуть MyBidViewHolder(привязка) } переопределить удовольствие onBindViewHolder(держатель: MyBidViewHolder, позиция: Int) { val currentItem = getItem (позиция) держатель.bind(текущийItem) } внутренний класс MyBidViewHolder (частная привязка val: ItemBidBinding): RecyclerView.ViewHolder(binding.root) { в этом { привязка.применить { } } забавная привязка (данные: MyBid) { привязка.применить { // Отменяем предыдущий CountdownTimerUtil countdownTimerMap[позиция]?.cancel() val днейTextView = textView46 val часыTextView = textView48 вал минутTextView = textView50 val секундTextView = textView52 // Вычисляем общее время в миллисекундах val totalTimeInMillis: Long = data.day.toLong() * 24 * 60 * 60 * 1000 + data.hours.toLong() * 60 * 60 * 1000 + data.minet.toLong() * 60 * 1000 + данные.секунда.toLong() * 1000 // Убедитесь, что CountdownTimerUtil всегда инициализирован countdownTimerMap[позиция] = CountdownTimerUtil( тотальноевремявмиллис, 1000, дниTextView, часыTextView, минутыTextView, секундыTextView ) { // Этот код будет выполнен после завершения обратного отсчета button.isEnabled = ложь } // Запускаем таймер countdownTimerMap[позиция]?.start() } } } класс DiffCallback : DiffUtil.ItemCallback() { переопределить fun areItemsTheSame(oldItem: MyBid, newItem: MyBid): Boolean { вернуть oldItem.id == newItem.id } переопределить удовольствие areContentsTheSame(oldItem: MyBid, newItem: MyBid): Boolean { вернуть старыйItem == новыйItem } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»