private void ChangeLevel(int newLevel, SKTrackElement parent) { if (newLevel > currentLevel) { elementsPerLevel.Add(newLevel, GetChildrenForCollectionElement(parent)); } currentLevel = newLevel; adapter.NotifyDataSetChanged(); listView.SetSelection(0); }
private List <object> GetChildrenForCollectionElement(SKTrackElement parent) { List <object> children = new List <object>(); foreach (SKTrackElement childElement in parent.ChildElements) { if (childElement.Type.Equals(SKTrackElementType.Collection)) { children.Add(childElement); } } children.AddRange(parent.PointsOnTrackElement); return(children); }
public override View GetView(int position, View convertView, ViewGroup parent) { View view = null; if (convertView == null) { LayoutInflater inflater = _context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater; view = inflater.Inflate(Resource.Layout.layout_track_element_list_item, null); } else { view = convertView; } Button drawButton = view.FindViewById <Button>(Resource.Id.draw_button); TextView text = view.FindViewById <TextView>(Resource.Id.label_list_item); object item = _context.elementsPerLevel[_context.currentLevel][position]; if (item is SKTracksPoint) { drawButton.Visibility = ViewStates.Gone; view.FindViewById(Resource.Id.indicator_children_available).Visibility = ViewStates.Gone; SKTracksPoint point = (SKTracksPoint)item; text.Text = "POINT\n(" + point.Latitude + ", " + point.Longitude + ")"; } else if (item is SKTrackElement) { drawButton.Visibility = ViewStates.Visible; view.FindViewById(Resource.Id.indicator_children_available).Visibility = ViewStates.Visible; SKTrackElement trackElement = (SKTrackElement)item; string name = trackElement.Name; if (string.IsNullOrEmpty(name)) { text.Text = trackElement.GPXElementType.ToString(); } else { text.Text = name; } drawButton.Click += (s, e) => { TrackElementsActivity.SelectedTrackElement = trackElement; _context.SetResult(Result.Ok); _context.Finish(); }; } return(view); }