美文网首页
倒计时列表

倒计时列表

作者: wenju | 来源:发表于2020-07-08 16:34 被阅读0次

面试遇到的需求,网上看了一些,自己写一下吧,附源码,有问题的大家可以提出来,一起进步
关键代码

public RecycleViewAdapter(Context context, List<TimeDownItem> lstTimeDownItems) {
    this.lstTimeDownItems = lstTimeDownItems;
    mHandler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1:
                    notifyItemChanged(msg.arg1, "update-time");
                    break;
            }
        }
    };
    if (mTimer == null) {
        mTimer = new Timer();
    }
    mTimer.schedule(new MyTask(), 0, 1000);
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_common, parent, false);
    ViewHolder holder = new ViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.tv.setText(lstTimeDownItems.get(position).getName() + position);
    if(lstTimeDownItems.get(position).getStarTime() == 0){
        holder.tv2.setText("倒计时结束");
    }else{
        holder.tv2.setText("倒计时:" + lstTimeDownItems.get(position).getStarTime()+"s");
    }

}

@Override
public int getItemCount() {
    return lstTimeDownItems.size();
}

public static class ViewHolder extends RecyclerView.ViewHolder {
    private TextView tv, tv2;

    ViewHolder(View view) {
        super(view);
        tv = view.findViewById(R.id.tv);
        tv2 = view.findViewById(R.id.tv2);
    }
}

class MyTask extends TimerTask {
    @Override
    public void run() {
        if (lstTimeDownItems.isEmpty()) {
            return;
        }
        int size = lstTimeDownItems.size();
        TimeDownItem bean = null;
        long totalTime;
        for (int i = 0; i < size; i++) {
            bean = lstTimeDownItems.get(i);
            totalTime = bean.getStarTime() - 1;
            if (totalTime >= 0) {
                bean.setStarTime(totalTime);
                Message message = mHandler.obtainMessage(1);
                message.arg1 = i;
                mHandler.sendMessage(message);
            }

        }
    }
}

源码地址:
https://gitee.com/wjboss1148205031/RecyleviewCountdownList

相关文章

网友评论

      本文标题:倒计时列表

      本文链接:https://www.haomeiwen.com/subject/ebpccktx.html