Как показать индикатор выполнения при запуске процесса? - PullRequest
0 голосов
/ 27 апреля 2018

Так что в моем OnCreate я запускаю указанную функцию, которая вызывается с populateDataLogin. Теперь я пытаюсь показать progressBar, когда populateDataLogin работает, и закрыть его, когда процесс завершится. Вот что я делаю

progressBar.setVisibility(View.VISIBLE);
    progressBar.post( new Runnable() {
        public void run() {
            populateDataLogin();
            inputEmail.setEnabled(true);
            inputFullname.setEnabled(true);
            inputPassword.setEnabled(true);
            inputTelp.setEnabled(true);
            inputAlamat.setEnabled(true);
            progressBar.setVisibility(View.INVISIBLE);
        }
    });

ну, я думаю, потому что populateDataLogin() слишком быстрый.

Вот мой populateDataLogin()

protected void populateDataLogin() {
        super.onStart();

        if (acct != null) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions.override(300,300);

            Glide   .with(MainActivity.this)
                    .load(acct.getPhotoUrl())
                    .apply(requestOptions)
                    .into(imagess);

            inputPassword.setVisibility(View.GONE);
            //CEK JIKA SUDAH ADA DI FIREBASE

            mDatabase = FirebaseDatabase.getInstance().getReference();
            BiodataTable = mDatabase.child("Biodata");
            Query queryToGetData = BiodataTable
                    .orderByChild("Email").equalTo(acct.getEmail());

            queryToGetData.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if(dataSnapshot.getValue() != null) {
                        for (DataSnapshot bioSnap : dataSnapshot.getChildren()) {
                            personName = bioSnap.child("Fullname").getValue().toString();
                            personAlamat = bioSnap.child("Alamat").getValue().toString();
                            personEmail = bioSnap.child("Email").getValue().toString();
                            personTelp = bioSnap.child("NoTelp").getValue().toString();

                            inputEmail.setText(personEmail);
                            inputFullname.setText(personName);
                            inputAlamat.setText(personAlamat);
                            inputTelp.setText(personTelp);
                        }
                    }else{
                        personName = acct.getDisplayName();
                        personEmail = acct.getEmail();

                        inputEmail.setText(personEmail);
                        inputFullname.setText(personName);

                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }

            });

            return;
        }
        Mauth = FirebaseAuth.getInstance();

        if(Mauth != null){
            mDatabase = FirebaseDatabase.getInstance().getReference();
            BiodataTable = mDatabase.child("Biodata");
            Query queryToGetData = BiodataTable
                    .orderByChild("Email").equalTo(Mauth.getCurrentUser().getEmail());

            queryToGetData.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    for (DataSnapshot bioSnap: dataSnapshot.getChildren()) {
                        personName = bioSnap.child("Fullname").getValue().toString();
                        personAlamat = bioSnap.child("Alamat").getValue().toString();
                        personEmail = bioSnap.child("Email").getValue().toString();
                        personTelp = bioSnap.child("NoTelp").getValue().toString();

                        inputEmail.setText(personEmail);
                        inputFullname.setText(personName);
                        inputAlamat.setText(personAlamat);
                        inputTelp.setText(personTelp);
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    }

Так почему я хочу, чтобы сначала показывался прогресс-бар? потому что я немного боюсь, когда у пользователя (ов) медленное соединение. Так как мне этого достичь?

1 Ответ

0 голосов
/ 27 апреля 2018

Надеюсь, это сработает для вас.

progressBar.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
       @Override
       public void run() {
       populateDataLogin();
       inputEmail.setEnabled(true);
       inputFullname.setEnabled(true);
       inputPassword.setEnabled(true);
       inputTelp.setEnabled(true);
       inputAlamat.setEnabled(true);
       progressBar.setVisibility(View.INVISIBLE);
       }
   },2000);
}
...