Таймер обратного отсчета RecyclerView не отображается в позиции 0 - PullRequest
0 голосов
/ 11 апреля 2020

Я сталкиваюсь с проблемой в представлении утилизатора, пытающейся добавить таймер обратного отсчета в каждую строку, но его позиция 0 не отображается.

Это означает, что первый элемент не имеет значения обратного отсчета. Снимок экрана Я реализую множество методов и ищу хороший метод, но не найден.

Но другие textview значения получают. И другой ряд показывает отлично.

@Override
public void onBindViewHolder(@NonNull TournamentListAdapter.ViewHolder holder, int position) {

    final Tournament_item model = historyList.get(position);

    rank.setText("Rank #"+model.getRank());

    Picasso.with(context).load(model.getGame_icon()).into(game_icon);


   total_player.setText("Player : "+model.getTotal_player());

    ////get Current Date
    Calendar start_calendar = Calendar.getInstance();
    DateFormat c_date = new SimpleDateFormat("yyyy-MM-dd");
    DateFormat c_time = new SimpleDateFormat("HH:mm:ss");
    Date date_c = new Date();
    String date_one = c_date.format(date_c).toString();
    String time_one = c_time.format(date_c).toString();
    //current.setText("Current Date : "+date_one+" "+time_one);
    StringTokenizer c_date_cut = new StringTokenizer(date_one, "-");
    StringTokenizer c_time_cut = new StringTokenizer(time_one, ":");
    int c_year = Integer.parseInt(c_date_cut.nextToken());
    int c_month = Integer.parseInt(c_date_cut.nextToken());
    int c_day = Integer.parseInt(c_date_cut.nextToken());
    int c_hour = Integer.parseInt(c_time_cut.nextToken());
    int c_minut = Integer.parseInt(c_time_cut.nextToken());
    int c_second = Integer.parseInt(c_time_cut.nextToken());
    start_calendar.set(c_year,c_month,c_day,c_hour,c_minut,c_second);
    Calendar end_calendar = Calendar.getInstance();
    String date =model.getEnd_date();
    String time = model.getEnd_time();
    StringTokenizer date_cut = new StringTokenizer(date, "-");
    StringTokenizer time_cut = new StringTokenizer(time, ":");
    int year = Integer.parseInt(date_cut.nextToken());
    int month = Integer.parseInt(date_cut.nextToken());
    int day = Integer.parseInt(date_cut.nextToken());
    final int hour = Integer.parseInt(time_cut.nextToken());
    int minut = Integer.parseInt(time_cut.nextToken());
    int second = Integer.parseInt(time_cut.nextToken());
    end_calendar.set(year,month,day,hour,minut,second);
    ////////////////////////////////////////////////////////////////////
    long start_millis = start_calendar.getTimeInMillis(); //get the start time in milliseconds
    long end_millis = end_calendar.getTimeInMillis(); //get the end time in milliseconds
    long total_millis = (end_millis-start_millis); //total time in milliseconds

    CountDownTimer cdt = new CountDownTimer(total_millis, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
            millisUntilFinished -= TimeUnit.DAYS.toMillis(days);

            long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
            millisUntilFinished -= TimeUnit.HOURS.toMillis(hours);

            long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
            millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes);

            long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
            if(days ==0&&hours==0&& minutes==0) {
                forth.setText(seconds+"");
                third.setVisibility(View.GONE);
                second1.setVisibility(View.GONE);
                first.setVisibility(View.GONE);
            } else if(days ==0&&hours==0){
                forth.setText( seconds+"");
                third.setText(minutes + "");
                second1.setVisibility(View.GONE);
                first.setVisibility(View.GONE);
            } else if(days ==0){
                first.setVisibility(View.GONE);
                forth.setText( seconds+"");
                third.setText(minutes + "");
                second1.setText(hours+"");
            } else {
                forth.setText( seconds+"");
                third.setText(minutes + "");
                second1.setText(hours+"");
                first.setText(days+"");
            }

        }
        @Override
        public void onFinish() {
            third.setText("0");
            second1.setText("0");
            first.setText("0");
            forth.setText("0");
            //int po = Integer.parseInt(model.getEntry_fee())*Integer.parseInt(model.getTotal_player());
           // times_up(String.valueOf(model.getId()),String.valueOf(po));

        }
    };
    cdt.start();}

Это RecyclerView Код адаптера.

Обновленный рабочий код:

    count_down(total_millis, holder);
private void count_down(long total_millis, final ViewHolder holder) {
        holder.cdt = new CountDownTimer(total_millis, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
                millisUntilFinished -= TimeUnit.DAYS.toMillis(days);

                long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
                millisUntilFinished -= TimeUnit.HOURS.toMillis(hours);

                long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
                millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes);

                long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
                if (days == 0 && hours == 0 && minutes == 0) {
                    holder.forth.setText(seconds + "");
                    holder.third.setVisibility(View.GONE);
                    holder.second1.setVisibility(View.GONE);
                    holder.first.setVisibility(View.GONE);
                    Log.i("the time is ", "" + seconds + " " + holder.game_name.getText().toString());
                } else if (days == 0 && hours == 0) {
                    holder.forth.setText(seconds + "");
                    holder.third.setText(minutes + "");
                    holder.second1.setVisibility(View.GONE);
                    holder.first.setVisibility(View.GONE);
                    Log.i("the time is ", "" + seconds + " " + minutes + " " + holder.game_name.getText().toString());
                } else if (days == 0) {
                    holder.first.setVisibility(View.GONE);
                    holder.forth.setText(seconds + "");
                    holder.third.setText(minutes + "");
                    holder.second1.setText(hours + "");
                    Log.i("the time is ", "" + seconds + " " + minutes + " " + hours + " " + holder.game_name.getText().toString());
                } else {
                    holder.forth.setText(seconds + "");
                    holder.third.setText(minutes + "");
                    holder.second1.setText(hours + "");
                    holder.first.setText(days + "");
                    Log.i("the time is ", "" + seconds + " " + minutes + " " + hours + " " + days + " " + holder.game_name.getText().toString());
                }
            }

            @Override
            public void onFinish() {
                holder.third.setText("0");
                holder.second1.setText("0");
                holder.first.setText("0");
                holder.forth.setText("0");
                //int po = Integer.parseInt(model.getEntry_fee())*Integer.parseInt(model.getTotal_player());
                // times_up(String.valueOf(model.getId()),String.valueOf(po));

            }
        };
        holder.cdt.start();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...