Я хотел бы прогрессировать мой ProgressBar в соответствии с установленным отсчетом времени. Вот что я сделал
package com.lezardman.istpcommunity.Adapter;
import android.os.CountDownTimer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.lezardman.istpcommunity.Model.Lesson;
import com.lezardman.istpcommunity.R;
import java.util.ArrayList;
import java.util.Locale;
public class AgendaLessonAdapter extends RecyclerView.Adapter<AgendaLessonAdapter.ViewHolder> {
private ArrayList<Lesson> lessons;
private CountDownTimer mCountDownTimer;
private int i = 0;
public AgendaLessonAdapter(ArrayList<Lesson> lessons) {
this.lessons = lessons;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_cours_agenda, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AgendaLessonAdapter.ViewHolder holder, int position) {
Lesson lesson = lessons.get(position);
//holder.lessonTimeRemain.setText("" + lesson.getLessonTime());
holder.lessonClass.setText(lesson.getLessonClass());
holder.lessonAndHours.setText(lesson.getLessonAndHours());
final long time = lesson.getLessonTime();
countDown(holder.lessonTimeRemain, time, holder.lessonProgress);
}
@Override
public int getItemCount() {
return lessons.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView lessonAndHours, lessonClass, lessonTimeRemain;
ProgressBar lessonProgress;
ViewHolder(@NonNull View itemView) {
super(itemView);
lessonAndHours = itemView.findViewById(R.id.lessonAndHours);
lessonClass = itemView.findViewById(R.id.lessonClass);
lessonProgress = itemView.findViewById(R.id.lessonProgress);
lessonTimeRemain = itemView.findViewById(R.id.lessonTimeRemain);
}
}
private void countDown(final TextView lessonTimeRemain, final long time, final ProgressBar lessonProgress) {
i++;
lessonProgress.setProgress(i);
mCountDownTimer = new CountDownTimer(time, 1000) {
@Override
public void onTick(long l) {
i++;
lessonProgress.setProgress((int) (i * 100 / (time / 1000)));
updateCountDownText(l, lessonTimeRemain);
// lessonProgress.setMax((int) time);
}
@Override
public void onFinish() {
lessonProgress.setProgress(100);
}
}.start();
}
private void updateCountDownText(long time, TextView lessonTimeRemain) {
int hours = (int) (time / (1000 * 60 * 60));
int minutes = (int) (time % (1000 * 60 * 60)) / (1000 * 60);
int seconds = (int) ((time % (1000 * 60 * 60)) % (1000 * 60) / 1000);
String timerLeftFormatted = String.format(Locale.getDefault(), "- %02d:%02d:%02d", hours, minutes, seconds);
lessonTimeRemain.setText(timerLeftFormatted);
}
}
, но мой прогрессбар заполняется, когда время еще не истекло.
помогите мне установить sh алгоритм для расчета времени и, следовательно, для синхронизации progressBar. PS: когда мой отсчет достигает 00:00:01 Он больше не движется, он не достигает 00:00:00, как я могу установить это также
Спасибо