Android Индикация / скрытие индикатора выполнения при загрузке данных - PullRequest
0 голосов
/ 09 июля 2020

Мне нужна помощь в этом: отображение / скрытие индикатора выполнения при извлечении данных из внешнего источника.

У меня этот индикатор выполнения объявлен в файле ресурсов макета действия:

   <ProgressBar
        android:id="@+id/progressBar2"
        style="?android:attr/progressBarStyle"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"/>

В методе действия onCreate он делается невидимым:

progressBar = (ProgressBar) findViewById(R.id.progressBar2);
progressBar.setVisibility(View.INVISIBLE);

Перед получением данных с сервера я его показываю - это то, что я собираюсь сделать:

progressBar.setVisibility(View.VISIBLE);

Затем, когда данные получены, я намерен снова скрыть их с помощью:

 progressBar.setVisibility(View.INVISIBLE);

Но, конечно, не работает, как я притворяюсь. Что не так с кодом или этим подходом к отображению простой полосы выполнения, когда приложение обращается к серверу за данными?

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Код, который вы разместили, верен - у вас есть «проблема» в том, что нет прогресса, поэтому похоже, что ваш код не работает.

Вы также должны установить прогресс. Обычно при загрузке файла или некоторых данных или загрузки страницы у нас есть прогресс, который возвращается в обратном вызове. Если у вас нет чего-то подобного, вы можете просто увеличивать индикатор выполнения каждую секунду или что-то в этом роде (или просто использовать вместо этого вращающийся / бесконечный индикатор выполнения).

Вот как вы бы это сделали:

progressBar.setProgress(progressBar.getProgress()+1);
0 голосов
/ 09 июля 2020

Если вы получаете данные с сервера, вам нужно просто выполнить следующие простые шаги: -

шаг 1 : сделать индикатор выполнения видимым как пропавший / невидимый.

шаг 2 : показать индикатор выполнения непосредственно перед вызовом на сервер.

шаг 3 : при успешном ответе просто выполните индикатор выполнения снова становится невидимым.

просто выполните те же действия при использовании Retrofit или (volley / asyn c task)

...