【发布时间】:2018-06-05 18:02:16
【问题描述】:
我正在 Android Studio 中创建一个连接到 Cloud Firestore 数据库的应用。在数据库中,我有以下结构:
Myclass
- name = "test"
- subclass
- 0 = "String 1"
- 1 = "String 2"
类本身是这样声明的(删除了不相关的位):
public class Myclass {
private String name;
private String[] subclass;
// CONSTRUCTOR
public Chart() {}
//GETTERS
public String getName() { return this.name; }
// SETTERS
public void setSubclass(String[] thisSubclass) { this.subclass = thisSubclass; }
}
在活动中,Myclass 对象是这样设置的(同样,不相关的位被删除):
public class MyclassActivity {
DocumentReference docRef;
Myclass myItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set up database connection, read in itemId etc...
// ...omitted for clarity...
docRef = databaseRef.collection("myclass").document(itemId);
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
myItem = document.toObject(Myclass.class);
}
}
}
}
这会读入 Myclass 对象,名称设置正确,但子类对象没有设置 - 它仍然为空。
在调试控制台中有以下消息:
No setter/field for subclass found on class path.to.app.Myclass
“setSubclass”函数显示为灰色,就好像它从未使用过一样。我确定问题很明显,但我看不到。
【问题讨论】:
-
为什么不尝试将子类字段设为列表而不是数组?
private List<String> subclass; -
试过了 - 它没有任何区别。除非我应该对数据库中的数据结构做点什么?
-
这是一个键值对吗? - 子类 - 0 = “字符串 1” - 1 = “字符串 2”
标签: java android firebase google-cloud-firestore