public override View GetView(int position, View convertView, ViewGroup parent) { var row = convertView; ViewHolder holder; // Check if a view can be reused, otherwise inflate a layout and set up the view holder if (row == null) { // Inflate view from layout file row = LayoutInflater.From(Context).Inflate(Resource.Layout.lite_list_demo_row, null); // Set up holder and assign it to the View holder = new ViewHolder(); holder.Context = Context; holder.MapView = row.FindViewById <MapView> (Resource.Id.lite_listrow_map); holder.Title = row.FindViewById <TextView> (Resource.Id.lite_listrow_text); // Set holder as tag for row for more efficient access. row.Tag = holder; // Initialise the MapView holder.InitializeMapView(); // Keep track of MapView mMaps.Add(holder.MapView); } else { // View has already been initialised, get its holder holder = (ViewHolder)row.Tag; } // Get the NamedLocation for this item and attach it to the MapView NamedLocation item = GetItem(position); holder.MapView.Tag = item; // Ensure the map has been initialised by the on map ready callback in ViewHolder. // If it is not ready yet, it will be initialised with the NamedLocation set as its tag // when the callback is received. if (holder.Map != null) { // The map is already ready to be used setMapLocation(holder.Map, item); } // Set the text label for this item holder.Title.Text = item.Name; return(row); }