0

私はRecyclerViewにいくつかの異なるカードを持っています。 MapViewのは私にグリッドを示している上記のコードではCardViewのMapViewは、クリックすると更新されます

public class myCarAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnMapReadyCallback { 
public static class GeneralViewHolder extends RecyclerView.ViewHolder { 
    // each data item is just a string in this case 
    public Button mShareButton; 

    public GeneralViewHolder(View v) { 
     super(v); 
     mV = v; 
     mShareButton = (Button)v.findViewById(R.id.button_share); 
    } 
} 

public static class ViewHolderPickup extends GeneralViewHolder { 
    public Button mLinkButton; 
    public TextView mInfoText; 
    public MapView mMap; 

    public ViewHolderPickup(View v) { 
     super(v); 
     mLinkButton = (Button)v.findViewById(R.id.button_link_pickup); 
     mInfoText = (TextView)v.findViewById(R.id.textView_info_pickup); 
     mMap = (MapView)v.findViewById(R.id.map_card_pickup); 
    } 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v; 

    switch(viewType) { 
     case 1: 
      v = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.fragment_my_car_card_pickup, parent, false); 

      ViewHolderPickup viewHolderPickup = new ViewHolderPickup(v); 
      viewHolderPickup.mLinkButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        ((FragmentActivity)mV.getContext()).getSupportFragmentManager().beginTransaction() 
          .replace(R.id.content_main, new PickupFragment()) 
          .commit(); 
       } 
      }); 
      viewHolderPickup.mMap.onCreate(null); 
      viewHolderPickup.mMap.getMapAsync(this); 

      return viewHolderPickup; 
    } 

    return null; 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    ((GeneralViewHolder)holder).mShareButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast toast = Toast.makeText(mV.getContext(), R.string.cards_shared, Toast.LENGTH_SHORT); 
      toast.show(); 
     } 
    }); 

    switch (mDataset.get(position).type) { 
     case PICKUP: 
      ((ViewHolderPickup)holder).mInfoText.setText(mDataset.get(position).msg); 
      break; 
    } 
} 

@Override 
public void onMapReady(GoogleMap map) { 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(new 
      LatLng(51.0107214,6.9549693), 10)); 
    map.addMarker(new MarkerOptions() 
      .position(new LatLng(51.0107214, 6.9549693))); 


} 
} 

:(抜粋)は以下のよう

<com.google.android.gms.maps.MapView 
      android:id="@+id/map_card_pickup" 
      android:layout_width="match_parent" 
      android:layout_height="200dp" /> 

私はMapViewのを埋めるアダプタで:一枚のカードには、MapViewのが含まれています。 Mapviewをクリックすると、そのコンテンツが更新されます。

答えて

0

私は同じ問題を抱えていたと私はMapViewLiteバージョンを使用して、それを解決:

xmlns:map="http://schemas.android.com/apk/res-auto" 
(...) 
<com.google.android.gms.maps.MapView 
     (...) 
     map:liteMode="true"/> 

をこのGitHubのプロジェクトは非常に有用であった:https://github.com/saxman/android-map_list

はそれがお役に立てば幸いです。

関連する問題