Я пытаюсь получить данные из Firebase и загрузить их в свое пользовательское представление маркера, но всякий раз, когда я устанавливаю данные для своих текстовых представлений и изображений, они не отображаются, так как я верю, что мой код возвращает представление до того, как данные загружены, так как я могу go обойти эту проблему, пожалуйста?
@Override
public View getInfoContents(Marker marker) {
View view = ((Activity)context).getLayoutInflater()
.inflate(R.layout.markerinfo, null);
final TextView nameValue = (TextView) view.findViewById(R.id.name);
final TextView titleValue = (TextView) view.findViewById(R.id.title);
imageView = (ImageView) view.findViewById(R.id.img);
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef2 = database.getReference().child(marker.getSnippet().substring(1));
myRef2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
name = snapshot.child("name").getValue(String.class);
String title = snapshot.child("title").getValue(String.class);
String image = snapshot.child("image").getValue(String.class);
Toast.makeText(context, name, Toast.LENGTH_SHORT).show();
titleValue.setText(title);
nameValue.setText(name);
Glide.with(context)
.asBitmap()
.load(image)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(context, databaseError.toString(), Toast.LENGTH_SHORT).show();
}
});
return view;
}