Ich versuche, eine Karte als ein Element für eine RecyclerView hinzuzufügen, die in einem Fragment goinjg aufgeblasen wird. Ich initialisiere die Karte in der ViewHolder-Klasse, in der Konstruktormethode habe ich die mMapView.onCreate(null);
und mMapView.getMapAsync(this);
Methoden verwendet. Dieser Fehler tritt beim Betrieb der Anwendungen:Fehler initialisieren google maps android recyclerview
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.chimera.Fragment" on path: DexPathList[[zip file "/data/data/com.google.android.gms/app_chimera/m/00000006/DynamiteModulesB_GmsCore_prodmnc_xhdpi_release.apk"],nativeLibraryDirectories=[/data/user/0/com.google.android.gms/app_chimera/m/00000006/n/arm64-v8a, /system/lib64, /vendor/lib64]]
Im using these libraries from the support lib:com.google.android.gms:play-services:10.2.1, 'com.google.android.gms:play-services-maps:10.2.1', 'com.android.support:recyclerview-v7:25.3.0', 'com.android.support:appcompat-v7:25.3.0', 'com.android.support:support-v4:25.3.0', 'com.android.support:design:25.3.0'.
Irgendwelche Ideen für diese Behandlung?
class ListingsAdapter extends RecyclerView.Adapter { private final EarthquakesResponse itemResponse; ListingsAdapter() { itemResponse = new EarthquakesResponse(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_listings_earthquake, parent, false); return new ViewHolder(parent.getContext(), view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { final Feature itemDetail = itemResponse.getFeatures().get(position); holder.prepareItem(itemDetail); } @Override public int getItemCount() { return itemResponse.getMetadata() != null ? itemResponse.getMetadata().getCount() : 0; } void changeResponseData(@NonNull EarthquakesResponse newResponse) { final EarthquakeDiffCallback callback = new EarthquakeDiffCallback(this.itemResponse, newResponse); final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(callback); this.itemResponse.setMetadata(newResponse.getMetadata()); this.itemResponse.setBbox(newResponse.getBbox()); this.itemResponse.setFeatures(newResponse.getFeatures()); this.itemResponse.setType(newResponse.getType()); diffResult.dispatchUpdatesTo(this); } @Override public void onViewRecycled(ViewHolder holder) { super.onViewRecycled(holder); if (holder.mMap != null) { holder.mMap.clear(); holder.mMap.setMapType(GoogleMap.MAP_TYPE_NONE); } } class ViewHolder extends RecyclerView.ViewHolder implements OnMapReadyCallback { private final Context mContext; private final TextView mItemTitle; private MapView mLocation; private GoogleMap mMap; ViewHolder(Context context, View itemView) { super(itemView); this.mContext = context; this.mItemTitle = (TextView) itemView.findViewById(R.id.textview_itemlisting_title); mLocation = (MapView) itemView.findViewById(R.id.mapview_itemlisting_location); if (mLocation != null) { mLocation.onCreate(null); mLocation.getMapAsync(this); } } void prepareItem(@NonNull Feature itemDetail) { mItemTitle.setText(itemDetail.getProperties().getPlace()); setMapLocation(itemDetail); } private void setMapLocation(@NonNull Feature itemDetail) { final List coordinates = itemDetail.getGeometry().getCoordinates(); LatLng location = new LatLng(coordinates.get(1), coordinates.get(0)); mMap.clear(); mMap.addMarker(new MarkerOptions().position(location)); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 8f)); } @Override public void onMapReady(GoogleMap googleMap) { this.mMap = googleMap; MapsInitializer.initialize(this.mContext); this.mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); googleMap.getUiSettings().setMapToolbarEnabled(false); } } }