PDA

View Full Version : قرار دادن تایمر ایتم های ریسایکلر ویو



erfunxandy
دوشنبه 27 خرداد 1398, 10:55 صبح
سلام وقت بخیر ، من توی آیتم های 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();


}