gpt4 book ai didi

java - Datasnapshot HashMap 不能转换为另一个类

转载 作者:搜寻专家 更新时间:2023-11-01 04:05:35 25 4
gpt4 key购买 nike

我已将功能添加到我正在设计的应用程序中,以从我的 Firebase 数据库中获取所有“Job_Class”对象的列表,这工作正常,我可以获得所有工作。

问题是我需要使用我检索到的作业集合,但是我收到了错误:

java.util.HashMap cannot be cast to (packages removed).Job_Class

此错误发生在您将在下面的代码中看到的 for 循环中。如果有人可以帮助我实际使用检索到的工作,我将不胜感激。

public static void setUpCityChildrenListRetriever(final Context context, String cityName)
{
database.getReference("Cities").child(cityName).addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
Map<String, Job_Class> td = (HashMap<String, Job_Class>) dataSnapshot.getValue();

if (td != null)
{
ArrayList<Job_Class> values = new ArrayList<>(td.values());
//jobsInCityObjects = values;
List<String> keys = new ArrayList<String>(td.keySet());
//jobsInCityKeys = (ArrayList<String>) keys;

for (Job_Class job: values)
{
Log.d("firebase", job.getJobTitle());
}

Log.d("firebase", values.toString());
Log.d("firebase", keys.toString());
}
}

@Override
public void onCancelled(DatabaseError databaseError)
{
Main_Activity.shared_preferences_manager.setLatestErrorLog(databaseError.toString());
Toast.makeText(context, "Database Error - Please Report", Toast.LENGTH_SHORT).show();
}
});
}

最佳答案

Firebase 无法知道 Map 中的每个对象代表一个 Job_Class 实例。因此,您需要遍历 DataSnapshot,然后依次提取每个对象,而不是一次性转换结果:

    public void onDataChange(DataSnapshot dataSnapshot)
{
Map<String, Job_Class> td = new HashMap<String, Job_Class>()
for (DataSnapshot jobSnapshot: dataSnapshot.getChildren()) {
Job_Class job = jobSnapshot.getValue(Job_Class.class);
td.put(jobSnapshot.getKey(), job);
}

ArrayList<Job_Class> values = new ArrayList<>(td.values());
List<String> keys = new ArrayList<String>(td.keySet());

for (Job_Class job: values) {
Log.d("firebase", job.getJobTitle());
}

}

关于java - Datasnapshot HashMap 不能转换为另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792494/

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