初始化错误谷歌地图android回收视图
我正在尝试添加一个地图作为初始化错误谷歌地图android回收视图,android,google-maps,android-fragments,android-recyclerview,Android,Google Maps,Android Fragments,Android Recyclerview,我正在尝试添加一个地图作为回收视图的一个项目,,它将膨胀成一个片段。 我在ViewHolder类中初始化映射,在构造函数方法中,我使用 mMapView.onCreate(空)和 mMapView.getMapAsync(此文件)方法。 此错误在应用程序运行期间出现: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.chimera.Fragment" on path: DexPa
回收视图的一个项目,
,它将膨胀成一个片段。
我在ViewHolder类中初始化映射,在构造函数方法中,我使用
mMapView.onCreate(空)代码>和
mMapView.getMapAsync(此文件)代码>方法。
此错误在应用程序运行期间出现:
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]]
我正在使用支持库中的以下库:
- com.google.android.gms:play services:10.2.1
- com.google.android.gms:play services地图:10.2.1
- 支持:recyclerview-v7:25.3.0
- 支持:appcompat-v7:25.3.0
- support:support-v4:25.3.0
- 支持:设计:25.3.0
处理这个问题有什么想法吗
class ListingsAdapter extends RecyclerView.Adapter<ListingsAdapter.ViewHolder> {
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<Double> 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);
}
}
}
class ListingsAdapter扩展了RecyclerView.Adapter{
私人最终地震响应项目响应;
ListingsAdapter(){
itemResponse=新的地震响应();
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
最终视图=LayoutInflater.from(parent.getContext())
.充气(R.layout.item\u listings\u地震,父项,错误);
返回新的ViewHolder(parent.getContext(),视图);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
final Feature itemDetail=itemResponse.getFeatures().get(位置);
持有人。准备项目(项目详情);
}
@凌驾
public int getItemCount(){
return itemResponse.getMetadata()!=null?itemResponse.getMetadata().getCount():0;
}
void changeressedata(@NonNull-earthquickresponse-newResponse){
最终地震
=新地震DiffCallback(this.itemResponse,newResponse);
最终DiffUtil.diffesult diffesult=DiffUtil.calculateDiff(回调);
this.itemResponse.setMetadata(newResponse.getMetadata());
this.itemResponse.setbox(newResponse.getBbox());
this.itemResponse.setFeatures(newResponse.getFeatures());
this.itemResponse.setType(newResponse.getType());
diffResult.dispatchUpdatesTo(本);
}
@凌驾
视图上的公共无效已回收(视图持有人){
super.onViewRecycled(支架);
如果(holder.mMap!=null){
保持架.mMap.clear();
holder.mMap.setMapType(GoogleMap.MAP\u TYPE\u无);
}
}
类ViewHolder扩展了RecyclerView.ViewHolder在MapReadyCallback上实现{
私有最终上下文mContext;
私有最终文本视图mItemTitle;
私有地图视图位置;
私有谷歌地图;
ViewHolder(上下文、视图项视图){
超级(项目视图);
this.mContext=上下文;
this.mItemTitle=(TextView)itemView.findViewById(R.id.TextView\u itemlisting\u title);
mLocation=(MapView)itemView.findViewById(R.id.MapView\u ItemList\u位置);
如果(mLocation!=null){
mLocation.onCreate(空);
mLocation.getMapAsync(这个);
}
}
void prepareItem(@NonNull Feature itemDetail){
mItemTitle.setText(itemDetail.getProperties().getPlace());
setMapLocation(itemDetail);
}
私有void setMapLocation(@NonNull Feature itemDetail){
最终列表坐标=itemDetail.getGeometry().getCoordinates();
车床位置=新车床(坐标.get(1),坐标.get(0));
mMap.clear();
mMap.addMarker(新的MarkerOptions().position(位置));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(位置8f));
}
@凌驾
4月1日公开作废(谷歌地图谷歌地图){
this.mMap=谷歌地图;
初始化(this.mContext);
this.mMap.setMapType(GoogleMap.MAP\u TYPE\u NORMAL);
googleMap.getUiSettings().setMapToolbarEnabled(false);
}
}
}
您正在xml中添加一些应用程序找不到的类“com.google.android.chimera.Fragment”。您可以在地图的片段中添加以下xml代码
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="350dp" />
您正在xml中添加一些应用程序找不到的类“com.google.android.chimera.Fragment”。您可以在地图的片段中添加以下xml代码
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="350dp" />