【发布时间】:2020-08-10 07:17:09
【问题描述】:
我正在尝试将 firebase 数据存储为离线数据集。因此,在这种情况下,我已将 firestore 数据检索到一个列表,该列表作为List<CropsModel> data 传递给addCrops() 方法。使用此列表的数据,我正在尝试检索我之前存储到运行良好的 firestore 存储的 firestore 存储图像数据。问题是我试图将图像数据和CropsModel 列表数据组合到一个列表mData,它是CustomListItem_Cultivation 类型的列表。但由于某种原因,数据没有存储到列表中。我检查了循环外的mData 列表的大小为0,而CropsModel 列表的大小为5。因此没有数据转换为json 来存储sharedPreferance。
private void addCrops(final List<CropsModel> data) {
Log.d("checked", "crops here");
for (final CropsModel crop : data) {
StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl("gs://app-597o.appspot.com/crops/").child(crop.getNameEnglish() + ".jpg");
try {
final File file = File.createTempFile("image1", "jpg");
storageReference.getFile(file).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);
mData.add(new CustomListItem_Cultivation(crop.getNameBangla(),crop.getNameEnglish(),imageEncoded));
// Log.d("datasetCrop", crop.nameBangla + " " + crop.nameEnglish + " " + crop.cropPicture + " " + crop.cropPicture.length);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
Gson gson = new Gson();
String json= gson.toJson(mData);
editor.putString(CULTIVATION_ITEMS,json);
editor.apply();
}
CustomListItem_Cultivation.java
package com.example.app.model;
public class CustomListItem_Cultivation {
public String nameBangla;
public String nameEnglish;
public String userPhoto;
public CustomListItem_Cultivation(String nameBangla, String nameEnglish, String userPhoto) {
this.nameBangla = nameBangla;
this.nameEnglish = nameEnglish;
this.userPhoto = userPhoto;
}
public String getNameBangla() {
return nameBangla;
}
public String getNameEnglish() {
return nameEnglish;
}
public String getUserPhoto() {
return userPhoto;
}
}
【问题讨论】:
标签: android firebase arraylist sharedpreferences firebase-storage