Маркер Google Maps custom Info получает данные из Firebase - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь получить данные из 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;
}
...