How to handle multiple countdown timers in ListView?

后端 未结 4 1932
挽巷
挽巷 2020-11-27 06:02

I have a listview (with a custom list adapter), I need to display a countdown on every row.

For example, if my list contains 4 items, I will have 4 rows. At this po

4条回答
  •  孤城傲影
    2020-11-27 06:47

    Adapter class:-


    public class CountdownAdapter extends RecyclerView.Adapter { ArrayList mList; Context mContext;

    public CountdownAdapter(ArrayList mList, Context mContext) {
        this.mList = mList;
        this.mContext = mContext;
    }
    
    public class ViewHolder extends RecyclerView.ViewHolder {
        CountDownTimer timerCount;
        TextView mCountDownTxt;
    
        public ViewHolder(View convertView) {
            super(convertView);
            mCountDownTxt = (TextView)convertView.findViewById(R.id.countdown_text);
        }
    }
    
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return null;
    }
    
    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        if(holder.timerCount==null) {
            holder.timerCount = new CountDownTimer(mList.get(position), 1000) {
                @Override
                public void onTick(long millis) {
                    String hms = String.format("%02d:%02d",  TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
                    holder.mCountDownTxt.setText(hms);
                }
    
                @Override
                public void onFinish() {
    
                }
            };
        }
        holder.mCountDownTxt.setVisibility(View.VISIBLE);
        holder.timerCount.start();
    }
    
    @Override
    public int getItemCount() {
        return mList.size();
    }
    

    }

提交回复
热议问题