![](/img/trans.png)
[英]Android retrieve the data from Firebase and save it in ArrayList
[英]Retrieve an ArrayList from Firebase
我在 Firebase 中有一个 ArrayList 对象,我想检索它。 我有 2 个数组列表。 一弦一品。 当我尝试使用对象数组时出现问题:
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.gradecalculator.Grade
mDocRef:
private DocumentReference mDocRef = FirebaseFirestore.getInstance().document("myData/Arrays");
上传 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();
下载 arrays:
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>>
您可以使用您的列表创建另一个 class:
class GradeContainer{
private List<Grade> grades;
public GradeContainer(){}
public List<Grade> getGrades(){
return grades;
}
}
并使用dataToLoad.toObject() :
grades = List<Grade> dataToLoad.toObject(GradeContainer.class).getGrades();
您可以阅读此文档以获取更多信息:
而本教程:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.