У меня есть некоторый код (полный метод включен в конце), который включает в себя диалог Progress. Проблема в том, что в диалоговом окне Progress не отображается никакого прогресса (он не перемещается от 0 до 100), он остается на нуле без движения, пока код не будет завершен, а затем исчезнет. Таким образом, он появляется в нужное время и отклоняется в нужное время, но не показывает прогресс между ними.
Вот раздел, в котором я пытаюсь увеличить диалоговое окно. Переменная intProgress работает, я вижу ее увеличение от 0 до 100 в журнале, так почему бы это не показать в диалоге прогресса?
for(Animal animal : lstAnimals) {
i = i + 1;
animal.addToSqlLite(strTableName, animal, sqLiteDatabase);
int intProgress = (int) (((double) (i) / (double) lstAnimals.size()) * 100);
Log.d(TAG, "vvvv: " + "i = " + i + " total = " + lstAnimals.size() + " prog = " + intProgress);
progressDialog.setProgress(intProgress);
}
Полный метод здесь:
// fetches data from the server and copies it across to the sqlite database
public void fetchDataFromServerAndAddToSqlLite(ProgressBar progressBar, String strTableName, SQLiteDatabase sqLiteDatabase, Context context) {
// progressBar.setVisibility(View.VISIBLE);
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setTitle("Wildgoosechase");
progressDialog.setMessage("Downloading Animals...");
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(false);
progressDialog.setMax(100);
progressDialog.setProgress(0);
progressDialog.show();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://xxxxxxxxxxxx.co.za/")
.addConverterFactory(GsonConverterFactory.create())
.build();
wildgoosechaseAPI myWildGooseChaseApi = retrofit.create(wildgoosechaseAPI.class);
retrofit2.Call<List<Animal>> call = myWildGooseChaseApi.getAnimals();
call.enqueue(new Callback<List<Animal>>() {
@Override
public void onResponse(Call<List<Animal>> call, Response<List<Animal>> response) {
if(!response.isSuccessful()){
// progressBar.setVisibility(View.GONE);
progressDialog.dismiss();
}
List<Animal> lstAnimals = response.body();
int i = 0;
for(Animal animal : lstAnimals) {
i = i + 1;
animal.addToSqlLite(strTableName, animal, sqLiteDatabase);
int intProgress = (int) (((double) (i) / (double) lstAnimals.size()) * 100);
Log.d(TAG, "vvvv: " + "i = " + i + " total = " + lstAnimals.size() + " prog = " + intProgress);
progressDialog.setProgress(intProgress);
}
// progressBar.setVisibility(View.GONE);
progressDialog.dismiss();
}
@Override
public void onFailure(Call<List<Animal>> call, Throwable t) {
// progressBar.setVisibility(View.GONE);
progressDialog.dismiss();
}
});
}