gpt4 book ai didi

java - 是否可以在应用程序已运行的情况下从客户端生成对象/模型类

转载 作者:行者123 更新时间:2023-12-01 20:27:13 25 4
gpt4 key购买 nike

我询问是否可以从 Firestore 文档快照生成模型类,或者从文档快照检索字段值并将其绑定(bind)到 View ,而无需模型类或使用与字段相比对象较少的模型类在 Firestore 文档中。

例如,在从文档中获取的代码中:

    public static class Post {
public String author;
public String title;

public Post(String author, String title) {
// ...
}

}
// Get a reference to our posts
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("server/saving-data/fireblog/posts");

// Attach a listener to read the data at our posts reference
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Post post = dataSnapshot.getValue(Post.class);
System.out.println(post);
}

我们希望文档有 2 个字段。但是假设它有两个以上未在模型类中声明的字段。如何检索其他字段的值并将它们绑定(bind)到 Android 中的 View ?

最佳答案

首先,您谈论的是 Firestore,但您分享了与 Firebase 实时数据库相关的代码。如果有误,这就是 Firestore 的响应。

am inquiring if it is possible to generate a model class from a Firestore document snapshot

您无法根据数据库中的字段简单地创建 Java 类。有一些libraries这可以帮助您实现这一目标,但这不是重点。

retrieve and bind field values to views from a document snapshot without having a model class

这当然是可能的。 DocumentSnapshot类包含以 get(String field) 开头的 get() 方法的多种风格这可以帮助获取字段的值,并根据其类型,您可以根据需要对其进行转换,并以 getLong(String field) 等专门方法结尾。 , getBoolean(String field)甚至getData()那:

Returns the fields of the document as a Map or null if the document doesn't exist.

因此,您无需模型类即可从 Firestore 获取数据。

or with a model class that has fewer objects compared to the fields in the Firestore document

是的,与数据库中的字段相比,您可以拥有一个具有更少字段的模型类,但目的是什么?为什么要在数据库中存储一些您不想获取的数据?通常,我们只存储我们使用的数据,这样做是为了节省带宽和资源。

we expect the document to have 2 fields. but suppose it has more than two fields that were not declared in the model class. how would one retrieve the values of those other fields and bind them to views in android

假设除了 authortitle 属性之外,数据库中还有另一个名为 description 的属性。由于您的 Post 类中不存在此属性,因此以下代码行将产生编译错误:

对于 Firestore:

Post post = document.toObject(Post.class);
String description = post.description;

对于 Firebase 实时数据库:

Post post = dataSnapshot.getValue(Post.class);
String description = post.description;

为了能够获取该属性的值,您应该使用以下代码行:

对于 Firestore:

String description = document.getString("description");

对于 Firebase 实时数据库:

String description = dataSnapshot.child("description").getValue(String.class);

关于java - 是否可以在应用程序已运行的情况下从客户端生成对象/模型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58909631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com