gpt4 book ai didi

java - 将数据从 Firebase 检索到实体中

转载 作者:行者123 更新时间:2023-12-02 10:36:59 24 4
gpt4 key购买 nike

我正在尝试从 Firebase 数据库检索数据以将其添加到本地数据库。

这段代码:

database = FirebaseDatabase.getInstance();
myRef = database.getReference();
Query LANGUAGES_REF = myRef.child("languages").orderByChild("id");

LANGUAGES_REF.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if (dataSnapshot.hasChildren()) {
Iterator<DataSnapshot> iterator = dataSnapshot.getChildren().iterator();
do {
Language language = iterator.next().getValue(Language.class);
languageR.insert(language);
} while (iterator.hasNext());
}

不起作用,我知道这是因为 Language.class 是一个实体。除了创建一个带有 getter 和 setter 以及完整构造函数的新类......并重复所有内容之外,还有其他方法吗?

我得到的错误是:

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.Long to type com.android.android.Database.Entities.Language

在这一行:

Language language = iterator.next().getValue(Language.class);

谢谢

编辑:Firebase数据库结构

"languages" : {
"LHZ7cAeOdPn-LwHNjIk" : {
"id" : 1,
"langName" : "Russian"
},
"LHZ7cAtXTGBlnWsdQOd" : {
"id" : 2,
"langName" : "French"
},
"LHZ7cAvrRs0rgI-PaJd" : {
"id" : 3,
"langName" : "Turkish"
}
}

语言.类

import java.io.Serializable;

import androidx.room.Entity;
import androidx.room.PrimaryKey;

@Entity
public class Language implements Serializable {

@PrimaryKey(autoGenerate = true)
private int id;

private String langName;

public int getId() {
return id;
}

public String getLangName() {
return langName;
}

public Language(String langName) {
this.langName = langName;
}

public void setId(int id) {
this.id = id;
}
}

最佳答案

要解决这个问题,您需要删除 do-while 循环,因为不需要使用 getChildren() 方法进行迭代,您可以直接从dataSnapshot 对象如下:

@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Language language = dataSnapshot.getValue(Language.class);
languageR.insert(language);
Log.d(TAG, language.getLangName());
}

logcat 中的输出将是:

Russian
French
Turkish

关于java - 将数据从 Firebase 检索到实体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53212957/

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