有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java谷歌地图标记自定义信息从Firebase获取数据

我试图从Firebase获取数据并将其加载到我的marker自定义视图中,但每当我将数据设置为我的TextView和imageview时,它都不会显示,因为我相信问题是,我的代码在加载数据之前返回视图,所以我如何解决这个问题

@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;
}

共 (0) 个答案