[英]Setting Text in Edit Text takes time after retrieving data from Firebase Realtime Database
我有一个 Android 项目,我正在使用 Firebase 实时数据库来存储我的数据。
问题 - 我的活动中的 EditTexts 字段首先显示,然后当我的 EditTexts 填充有我从数据库中读取的数据时,会有大约 5 秒的时间间隔。
这是代码 -
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) {
}
});
}
这是数据库的结构 -
有什么方法可以加快这个过程,因为我不认为我将数据设置为相应的 EditTexts 的方法是最好和最快的方法。 任何帮助,将不胜感激。
我正在显示这样的数据
这取决于用户的 Internet 带宽。 使用进度圈对话框向用户显示一些交互式 UI。
我不知道您为什么将值和键放在map
中,然后循环遍历它们,而您可以直接使用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) {
}
});
}
我认为这取决于用户的互联网速度。 您需要显示一个进度对话框 UI 以提醒用户在从 firebase 加载数据时请稍候。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.