谷歌地图在Android的recylerview上实现地图时返回空对象引用
我正在recylerview适配器上实现GoogleMap,但它返回空对象引用 尝试在空对象引用上调用虚拟方法“com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)”谷歌地图在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
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
中或之后的方式重新编写逻辑