Datasnapshot HashMap无法强制转换为其他类

我已经为我正在设计的应用程序添加了这些function,以便从我的Firebase数据库获取所有“Job_Class”对象的列表,这工作正常,我可以获得所有工作。

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

无法转换java.util.HashMap(已删除包).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 td = (HashMap) dataSnapshot.getValue(); if (td != null) { ArrayList values = new ArrayList(td.values()); //jobsInCityObjects = values; List keys = new ArrayList(td.keySet()); //jobsInCityKeys = (ArrayList) 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 td = new HashMap() for (DataSnapshot jobSnapshot: dataSnapshot.getChildren()) { Job_Class job = jobSnapshot.getValue(Job_Class.class); td.put(jobSnapshot.getKey(), job); } ArrayList values = new ArrayList<>(td.values()); List keys = new ArrayList(td.keySet()); for (Job_Class job: values) { Log.d("firebase", job.getJobTitle()); } }