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をクリックすると、そのコンテンツが更新されます。