Настройка текста в редактировании текста занимает некоторое время после извлечения данных из базы данных Firebase Realtime - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть проект Android, и я использую базу данных Firebase Realtime для хранения моих данных.

Проблема - сначала отображаются поля EditTexts в моей деятельности, а затем временной промежуток около 5 секунд, когда Мой EditTexts заполнен данными, которые я читаю из базы данных.

Вот код -

private void updatePersonalInfo() {
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("resumeDataOfUser").child(userPhoneNumber).child("Personal Info");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
               map.put(snapshot.getKey().toString(),snapshot.getValue().toString());
            }
            if(!map.containsKey("linkedInUserName")){
                for( HashMap.Entry<String, String> entry : map.entrySet() ){
                    if(entry.getKey().equals("pincode")) mAddressPinCode.getEditText().setText(entry.getValue());
                    if(entry.getKey().equals("otherPhone")) mOtherPhoneNumber.getEditText().setText(entry.getValue());
                    if(entry.getKey().equals("city")) mAddressCity.getEditText().setText(entry.getValue());
                    if(entry.getKey().equals("name")) mFullName.getEditText().setText(entry.getValue());
                    if(entry.getKey().equals("state")) mAddressState.setText(entry.getValue());
                    if(entry.getKey().equals("email")) mEmail.getEditText().setText(entry.getValue());
                }
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

Это структура базы данных -

structure

Есть ли способ ускорить этот процесс, потому что я не думаю, что мой подход установки данных для соответствующих EditTexts является лучшим и самым быстрым. Буду признателен за любую помощь.

Я отображаю такие данные

enter image description here

Ответы [ 3 ]

0 голосов
/ 28 апреля 2020

Я не знаю, почему вы вводите значения и ключи в map, а затем l oop через них, в то время как вы можете легко извлечь значения, используя dataSnapshot напрямую:

private void updatePersonalInfo() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("resumeDataOfUser").child(userPhoneNumber).child("Personal Info");


reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

    //get values 
    String pinCode = dataSnapshot.child("pincode").getValue(String.class);
    String otherPhone = dataSnapshot.child("otherPhone").getValue(String.class);
    String city = dataSnapshot.child("city").getValue(String.class);
    String name = dataSnapshot.child("name").getValue(String.class);
    String state = dataSnapshot.child("state").getValue(String.class);
    String email = dataSnapshot.child("email").getValue(String.class);

    //set the values
    mAddressPinCode.getEditText().setText(pinCode);
    mOtherPhoneNumber.getEditText().setText(otherPhone);
    mAddressCity.getEditText().setText(city);
    mFullName.getEditText().setText(name);
    mAddressState.getEditText().setText(state);
    mEmail.getEditText().setText(email);




    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

       }
    });
 }
0 голосов
/ 28 апреля 2020

Я думаю, это зависит от скорости пользователя rnet. Вам необходимо отобразить пользовательский интерфейс диалогового окна прогресса, чтобы предупредить пользователя о необходимости подождать, пока данные загрузятся из базы данных.

Диалог хода выполнения

0 голосов
/ 28 апреля 2020

Зависит от полосы пропускания пользователей rnet. Используйте диалоговое окно «Ход выполнения», чтобы показать пользователю некоторый интерактивный интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...