![](/img/trans.png)
[英]How to use multiple countDownTimer into recyclerView on Android
[英]Android CountDownTimer in RecyclerView
我通过显示textview
的值在ReclyerView
插入一个countDownTimer
。 countDownTimer
在运行我的Activity时工作正常我的问题是,当我滚动浏览ReclyerView
并返回到前面的项目时,计时器无法正常工作并显示不正确的数字
onBindViewHolder
if (mListDiscountTab.get(holder.getAdapterPosition()).getmCountDownTimer() == null) {
mListDiscountTab.get(holder.getAdapterPosition()).setmCountDownTimer(new CountDownTimer((((mListDiscountTab.get(holder.getAdapterPosition()).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(NumberConverter.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();
}
请尝试在对象中添加字段秒,通过检查对象的秒来设置持有者的textView UI。
onBindViewHolder
if (mListDiscountTab.get(holder.getAdapterPosition()).getmCountDownTimer() == null) {
mListDiscountTab.get(holder.getAdapterPosition()).setmCountDownTimer(new CountDownTimer((((mListDiscountTab.get(holder.getAdapterPosition()).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);
mListDiscountTab.get(holder.getAdapterPosition()).setSec(sec);
notifyDataChanged();
}
@Override
public void onFinish() {
mListDiscountTab.remove(holder.getAdapterPosition());
notifyDataChanged();
}
});
mListDiscountTab.get(holder.getAdapterPosition()).getmCountDownTimer().start();
}
((ViewHolderItem) holder).tv_item_timer_hour_home_discount.setText(NumberConverter.Number_English_to_Persian(mListDiscountTab.get(holder.getAdapterPosition()).getSec() / 3600));
((ViewHolderItem) holder).tv_item_timer_minute_home_discount.setText(NumberConverter.Number_English_to_Persian(((mListDiscountTab.get(holder.getAdapterPosition()).getSec() % 3600) / 60)));
((ViewHolderItem) holder).tv_item_timer_second_home_discount.setText(NumberConverter.Number_English_to_Persian((mListDiscountTab.get(holder.getAdapterPosition()).getSec() % 3600) % 60));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.