سلام وقت بخیر ، من توی آیتم های RecyclerView یه CountDownTimer قرار دادم که با شروع اکتیویتی به درستی نمایش داده میشه اعداد و شروع به شمارش میکنه اما مشکل اینجاست اگه ایتم ها رو اسکرول کنم رو به پایین و دوباره به ایتم های قبلی برگردم تایمر به زبون عامیانه ترکیده و اعداد نادرستی رو نشون میده کسی دلیل این رو میدونه؟

اینم کد برای چک کردن که قبلا تایمر ساخته نشده باشه اگر مقدارش null بود تایمر رو میسازه



if (mListDiscountTab.get(holder.getAdapterPosition()) .getmCountDownTimer() == null) {
mListDiscountTab.get(holder.getAdapterPosition()). setmCountDownTimer(new CountDownTimer((((mListDiscountTab.get(holder.getA dapterPosition()).getHour() * 60 * 60) + (mListDiscountTab.get(holder.getAdapterPosition()) .getMinute() * 60) + (mListDiscountTab.get(holder.getAdapterPosition()) .getSecond())) * 1000), 1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.d("herePOU", holder.getAdapterPosition()+"");
long sec = (millisUntilFinished / 1000);
((ViewHolderItem) holder).tv_item_timer_hour_home_discount.setText(N umberConverter.Number_English_to_Persian(sec / 3600));
((ViewHolderItem) holder).tv_item_timer_minute_home_discount.setText (NumberConverter.Number_English_to_Persian(((sec % 3600) / 60)));
((ViewHolderItem) holder).tv_item_timer_second_home_discount.setText (NumberConverter.Number_English_to_Persian((sec % 3600) % 60));
}


@Override
public void onFinish() {
mListDiscountTab.remove(holder.getAdapterPosition( ));
notifyItemRemoved(holder.getAdapterPosition());
}
});
mListDiscountTab.get(holder.getAdapterPosition()). getmCountDownTimer().start();


}