谷歌地图在Android的recylerview上实现地图时返回空对象引用

谷歌地图在Android的recylerview上实现地图时返回空对象引用,android,google-maps,mvvm,android-databinding,Android,Google Maps,Mvvm,Android Databinding,我正在recylerview适配器上实现GoogleMap,但它返回空对象引用 尝试在空对象引用上调用虚拟方法“com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)” public class TripAdapterViewHolder extends RecyclerView

我正在recylerview适配器上实现GoogleMap,但它返回空对象引用

尝试在空对象引用上调用虚拟方法“com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)”

public class TripAdapterViewHolder extends RecyclerView.ViewHolder implements OnMapReadyCallback {
        TripAdapterBinding tripAdapterBinding;
        MapView mapView;
        GoogleMap gMap;

        TripAdapterViewHolder(TripAdapterBinding tripAdapterBinding) {
            super(tripAdapterBinding.itemTrip);
            this.tripAdapterBinding = tripAdapterBinding;
            setMap(tripAdapterBinding.map);
        }

        public void setMap(MapView map) {
            mapView = map;
            if (mapView != null)
            {
                mapView.onCreate(null);
                mapView.onResume();
                mapView.getMapAsync(this);
            }
        }

        @Override
        public void onMapReady(GoogleMap googleMap) {
            this.gMap = googleMap;
        }
在那个里我打电话给我的持有者在地图上显示数据

@Override
    public void onBindViewHolder(@NonNull TripAdapter.TripAdapterViewHolder holder, int position) {

        try {
            GoogleMap thisMap = holder.gMap;

            LatLng startPoint = new LatLng(37.7750, 122.4183);

            thisMap.addMarker(new MarkerOptions()
                    .position(startPoint)
                    .title("")
                    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));

            thisMap.animateCamera(CameraUpdateFactory.newLatLngZoom(startPoint, 12));



        }catch (Exception e){
            Log.e("MapException "," "+e.getMessage());
        }
        holder.bindTrip(tripLists.get(position));
    }

您应该通过显示路径来使用静态映射


在这里,您将获得地图的图像,您可以使用该图像在recycler view adapter中显示。

在调用
onBindViewHolder
后,可能会调用您的
onMapReady
,但mapView.getMapAsync(此);在映射准备就绪时异步调用适配器时调用。在使用Map执行任何操作之前,您必须等待它,因此如何在
onBindViewHolder
之前调用
onMapReady
,您不能这样做。不是你在一天之内打电话给
。当地图准备好时,系统将调用它。您必须以调用
onMapReady
中或之后的方式重新编写逻辑