有没有一种方法可以轻松地将此数据库调用写入函数?

时间:2020-06-20 06:08:33

标签: java android google-cloud-firestore

我正在处理的应用程序中的所有文本都存储在FireStore文档中,因此要检索它,我使用以下代码

db.collection("language").document("kCreateNewAccount").get()
  .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
      @Override
      public void onSuccess(DocumentSnapshot documentSnapshot) {
           String viewText = lan.equals("en") ? documentSnapshot.getString("en")
                                              : documentSnapshot.getString("es");
           createAccount.setText(viewText);
      }
  });

我试图将其放入一个以文档名称为参数并返回相应字符串的函数中,以免一遍又一遍地写同一件事,无济于事,欢迎任何帮助

1 个答案:

答案 0 :(得分:1)

Firebase查询是异步的,您必须使用回调函数。

  1. 创建回调接口

     public interface OnCompleteListener {
         void onComplete(String text);
     }
    
  2. 创建用于通过文档名称提取文本的方法

     public void getText(String document, final OnCompleteListener onCompleteListener) {
             db.collection("language").document(document).get()
                     .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                         @Override
                         public void onSuccess(DocumentSnapshot documentSnapshot) {
                             String viewText = lan.equals("en") ? documentSnapshot.getString("en")
                                     : documentSnapshot.getString("es");
                             onCompleteListener.onComplete(viewText);
                         }
                     });
         }
    
  3. 使用您的文档名称并指定一个侦听器来调用该方法

     getText("kCreateNewAccount", new OnCompleteListener() {
                 @Override
                 public void onComplete(String text) {
                     createAccount.setText(text);
                 }
             });