Это мой сценарий.У меня есть класс POJO, назовем его Car, объявленный так:
public class Plan{
private String id;
private String userId;
private List< String > pictures;
}
В этом классе картинки List должны иметь ссылки на хранилище Firebase, куда я на самом деле загружаюкартинки.У меня проблемы с этим из-за асинхронного корня функций Firebase.В первый момент этот список изображений имеет ЛОКАЛЬНЫЙ ПУТЬ к изображениям, потому что я не хочу, чтобы пользователь загружал НИЧЕГО, пока он не выполнит все шаги, необходимые для добавления записи в базу данных Firebase.Итак, я просто сохраняю локальный путь к изображениям.Но, как только данные будут сохранены в облаке, мне, конечно, нужно будет загрузить эти изображения в Firebase Storage и обновить соответствующие поля в базе данных Firebase.
Я застрял, пытаясь сделать что-то подобное:
public void saveToDB(){
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = database.getReference().child( "cars" );
databaseReference.push().setValue( this, new DatabaseReference.CompletionListener(){
@Override
public void onComplete( @Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference ){
if( databaseError != null ){
for( String imagePath : pictures ){
final DatabaseReference picReference = FirebaseDatabase.getInstance().getReference()
.child( "cars" )
.child( databaseReference.getKey() )
.child( "pictures" );
storageReference.putFile( Uri.fromFile( new File( imagePath ) ) )
.addOnSuccessListener( new OnSuccessListener< UploadTask.TaskSnapshot >(){
@Override
public void onSuccess( UploadTask.TaskSnapshot taskSnapshot ){
picReference.child( "0" )
.setValue( taskSnapshot.getMetadata().getPath() );
}
} );
}
}
}
} );
}
Как мне сделать так, чтобы все картинки загружались и все поля обновлялись в базе данных Firebase?