cardview里面的mapview没有加载地图

时间:2018-01-01 12:32:35

标签: android

我在mapView内部的mapView没有加载,直到我点击mapView(大约8次完成整个地图的加载)

检查我的图片。第一张卡片视图我轻拍了8次。第二张卡片我没有点击,也没有加载任何东西

我的一些card_layout.xml

<?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.CardView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/card_view"
        android:layout_margin="5dp"
        card_view:cardBackgroundColor="#ffffff"
        card_view:cardCornerRadius="3dp"
        card_view:cardElevation="3dp"
        card_view:contentPadding="4dp"
        android:foreground="?selectableItemBackground"
        android:clickable="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp">

            <com.google.android.gms.maps.MapView
                android:id="@+id/mapView"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:layout_alignParentStart="true"
                android:layout_below="@+id/item_image"
                android:layout_marginTop="15dp"
                android:layout_weight="1" />    

        </RelativeLayout>

    </android.support.v7.widget.CardView>

我的一些RecyclerAdapter.java

@Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

        View v = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.card_layout, viewGroup, false);
        ViewHolder viewHolder = new ViewHolder(v);

        return viewHolder;

    }   


    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int i) {
        viewHolder.itemTitle.setText(titles[i]);
        viewHolder.itemDetail.setText(details[i]);
        viewHolder.itemImage.setImageResource(images[i]);

        viewHolder.mp.onCreate(null);
        viewHolder.mp.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mMap = googleMap;
                mMap.getUiSettings().setZoomControlsEnabled(false);
                double lat1 = Double.parseDouble("1.344376");
                double lng1 = Double.parseDouble("103.862162");
                LatLng bord = new LatLng(lat1, lng1);
                mMap.addMarker(new MarkerOptions().position(bord).title("Marker on board"));
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(bord, 13.0f));
             }
        });
        viewHolder.mp.postInvalidate();

    }

希望你能提供帮助。

1 个答案:

答案 0 :(得分:0)

在RecyclerView上查看使用lite Map的示例。

样本-https://github.com/googlemaps/android-samples/blob/master/ApiDemos/java/app/src/main/java/com/example/mapdemo/LiteListDemoActivity.java

仔细检查“构造函数”,“ onMapReady”,“绑定”,“ onViewRecycled”方法