@kirvel

Не обновляется ProgressBar(Android)?

Вот код, который имеет следующий функционал: ArrayList заполняется объектами из базы данных Firebase. Мне нужно, чтобы при добавлении нового объекта обновлялся ProgressBar, но этого не происходит. Почему?

DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("films");
    reference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            for(DataSnapshot dataSnapshot:snapshot.getChildren()) {
                movies.add(dataSnapshot.getValue(Movie.class));
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        binding.progressBar.setProgress((movies.size()/1962)*100);
                    }
                });
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });


Вот и сам ProgressBar:
<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:id="@+id/progressBar"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_marginStart="250dp"
    android:progress="20"
    android:max="100"
    android:indeterminate="false"
    android:layout_centerInParent="true"/>
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Во-первых потому что все твои вызовы обновлений происходят подряд и все они выполнятся на следующем фрейме, то есть эффективно будет показано только последнее обновление. Элементы в список добавляются примерно мгновенно, то есть никакого обновления UI там не будет.
Во-вторых, я думаю, что ты считаешь прогресс неправильно: (movies.size()/1962)*100. Не знаю, что за магическое число, но думаю, что там всегда 0 получается. Это целочисленное деление.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы