先看图:
在电商中一般都需要待付款倒计时功能,规定具体多少小时,到时间自动取消此订单,由于此倒计时是在列表中的每个item中都要显示,处理不好会出现倒计时错乱。
先看adapter中代码:
public class MyWaitPayOrderAdapter extends RecyclerView.Adapter<MyWaitPayOrderAdapter.ViewHolder> {
private Context context;
private List<OrderApi.OrderBean> orderBeans;
//用于退出 Activity,避免 Countdown,造成资源浪费。
private SparseArray<CountDownTimer> countDownCounters ;
public MyWaitPayOrderAdapter(Context context, List<OrderApi.OrderBean> list){
this.context = context;
this.orderBeans = list;
this.countDownCounters = new SparseArray<>();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.myorder_main_item_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder,final int position) {
CountDownTimer countDownTimer = countDownCounters.get(holder.bt_order_pay.hashCode());
if (countDownTimer != null) {
//将复用的倒计时清除
countDownTimer.cancel();
}
long timer = 0;
//LogUtils.e("当前日期时间戳:"+ System.currentTimeMillis());
timer = MyFormatUtils.dateAddOneDay(orderBeans.get(position).odtime) - System.currentTimeMillis()