我正在创建一个用于在Firestore中存储多个图像链接的系统,并且该系统一直在工作,我从图库中进行选择并将其上传为List,以将其按顺序发送到银行(firestore),因为对我而言很重要,例如,我选择图像1,2,3,当我将它们的链接保存在Firestore中时,它永远不会以我加载的顺序获得2,1,3或3,1、2或3,2,1 ,它似乎是根据最浅的图像保存的,是根据我加载的位置保存的?我已经为此烦恼了几天。
已经可以从List.get(i)获取每张图像进行保存,但无济于事。
我正在这样保存在Firestore中-> list_img [ 0 link_img 1个link_img 2 link_img]
从图库上传
GalleryConfig config = new GalleryConfig.Build()
.limitPickPhoto(50)
.singlePhoto(false)
.hintOfPick("this is pick hint")
.filterMimeTypes(new String[]{})
.build();
GalleryActivity.openActivity(Pag_producao_hq.this, reqCode, config);
上传
private void upload_Fotos_selecionadas(Uri uri, final int totalimg, int i) {
Log.i("sdsd77", String.valueOf(i));
final StorageReference ImageFolder = FirebaseStorage.getInstance().getReference().child("imagens");
String nomeImagem = UUID.randomUUID().toString();
final StorageReference imagename = ImageFolder
.child("HQ")
.child(identificadorUsuario)
.child(nomeImagem);
arrayListImageRef.add(ImageFolder); //arraylist of type StorageRef
arrayListImageRef.add(imagename);
imagename.putFile(uri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String urlConvertida = uri.toString();
lista_url.add(urlConvertida);
if(lista_url.size()==totalimg){
Map<String, Object> new_imagens = new HashMap<>();
new_imagens.put("list_img", lista_url);
db.collection("HQ")
.document(getId())
.collection("Imagens")
.add(new_imagens);
dialog.dismiss();
finish();
}
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
if (!isFinishing()) {
dialog.dismiss();
}
Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
答案 0 :(得分:0)
Cloud Firestore不会以相同的插入顺序列出文档。自动ID与时间无关。您将需要添加一个时间戳字段,并使用此字段的顺序查询数据。