java - 从 Firebase 检索 ArrayList
问题描述
我在 Firebase 中有一个对象的 ArrayList,我想检索它。我有 2 个数组列表。一弦一品。当我尝试使用对象数组时出现问题:
java.lang.ClassCastException:java.util.HashMap 无法转换为 com.example.gradecalculator.Grade
mDocRef:
private DocumentReference mDocRef = FirebaseFirestore.getInstance().document("myData/Arrays");
上传数组:
Map<String, Object> dataToSave = new HashMap<String, Object>();
dataToSave.put("StringsArray", stringGrades); // Save Strings Array
dataToSave.put("ObjectsArray", grades); // Save Objects Array
mDocRef.set(dataToSave).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "Document has been saved!");
Toast.makeText(getApplicationContext(), "List has been saved successfully!", Toast.LENGTH_SHORT).show();
下载数组:
mDocRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
isListEmpty = false;
if (documentSnapshot.exists()) {
Map<String, Object> dataToLoad = (HashMap<String, Object>) documentSnapshot.getData();
stringGrades = (ArrayList<String>) dataToLoad.get("StringsArray");
grades = (ArrayList<Grade>) dataToLoad.get("ObjectsArray");
for (Grade grade : grades) { // <------------Fails here
System.out.println(grade.toString());
}
我第一次尝试使用 Firebase。似乎它成功地将数据保存在服务器中。有什么建议吗?
解决方案
DocumentSnapshot的get方法返回一个Map列表:
List<Map<String, Object>>
您可以使用您的 List 创建另一个类:
class GradeContainer{
private List<Grade> grades;
public GradeContainer(){}
public List<Grade> getGrades(){
return grades;
}
}
并使用dataToLoad.toObject():
grades = List<Grade> dataToLoad.toObject(GradeContainer.class).getGrades();
您可以阅读此文档以获取更多信息:
而本教程:
推荐阅读
- ios - UITableViewCell 中的 UITableView 没有给出正确的结果
- python - Pandas DataFrame 返回一个元组,但不能访问单个数字?
- python - pandas :通过减少一个大系列的一系列系列
- ios - 无法将类型“()”的值分配给类型“UIView?”
- r - 从R中的csv文件绘制多个x轴轮廓?
- java - 使用 openapi-generator-maven-plugin 打开 API 3.0 未显示任何招摇文档
- python - 如何按顺序在折线图中表示月份
- android - java - 如何像在xml中一样在java中设置lottie动画?
- acumatica - PXSelector 属性抑制表单上的错误
- android - 如何在使用改造 android 发布数据后移动到另一个活动?