有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从云Firestore获取地图数据

我想从cloud Firestore获取地图数据,这是我在swift中访问同一数据库所需的java代码。我附上了java代码和数据库结构图以供参考

FirebaseFirestore db = FirebaseFirestore.getInstance();
    DocumentReference mDocRef = db.collection("hmdhAcademy").document("notifications");

    mDocRef.get().addOnCompleteListener(task -> {

        if ( task.isSuccessful() ) {

            DocumentSnapshot documentSnapshot = task.getResult();

            if ( documentSnapshot != null && documentSnapshot.exists() ){

                notificationList = (ArrayList) documentSnapshot.get("userNotifications");
                adapter = new NotificationAdapter(this,notificationList);
                mRecyclerView.setAdapter(adapter);
                alertDialog.dismiss();
            }
        }
        else {

            Toast.makeText(NotificationActivity.this,"Check Internet Connection",Toast.LENGTH_SHORT).show();
            alertDialog.dismiss();
        }

    });

if ( list.get(i) instanceof  HashMap ){

        final Intent intent = new Intent(mContext,NotificationDetail.class);

        String title = (String)((HashMap)list.get((list.size()-1)-i)).get("title");
        String body = (String)((HashMap)list.get((list.size()-1)-i)).get("body");
        String image = (String)((HashMap)list.get((list.size()-1)-i)).get("notiImage");
        String detail = (String)((HashMap)list.get((list.size()-1)-i)).get("detail");
}

enter image description here

我需要相同的标题,身体,而不是图像和细节

请帮助我,我正在寻找答案,但失败了


共 (1) 个答案

  1. # 1 楼答案

    请尝试以下代码:

    docRef.getDocument { (document, error) in
    if let document = document, document.exists {
        print(document.data()!)
        let userNotifications = document.data()["userNotifications"] as? [[String:Any]]
        for notificaton in userNotifications  {
            let body = notificaton["body"] as? String ?? ""
            let title = notificaton["title"] as? String ?? ""
            print(body, title)
    
        }
    
    } else {
        print("Document does not exist")
    }
    }
    

    或者试试这样:

    1. 创建一个结构

      struct usernotifcatons {
      
      var body: String = ""
      var detail: String = ""
      var notiImage: String = ""
      var title: String = ""
      
      
      init(notificationData: [String:Any]) {
      
      let body = notificationData["body"] as? String ?? ""
      self.body = body
      
      let detail = notificationData["detail"] as? String ?? ""
      self.detail = detail
      
      let notiImage = notificationData["notiImage"] as? String ?? ""
      self.notiImage = notiImage
      
      let title = notificationData["title"] as? String ?? ""
      self.title = title
       }
      
      }
      
    2. 在ViewController中创建一个变量:

      var allNotifications: [usernotifcatons] = [usernotifcatons]()
      
    3. 将所有数据映射到firestore代码的一行中

      docRef.getDocument { (document, error) in
      if let document = document, document.exists {
      print(document.data()!)
      let userNotifications = document.data()?["userNotifications"] as? [[String:Any]]
      for data in userNotifications! {
                  self.allNotifications.append(usernotifications(notificationData: data))
              }
      print(self.allNotifications)
      
        } else {
      print("Document does not exist")
       }
      }