private void ChangeLevel(short newLevel, long parentId) { if (newLevel == 0 || newLevel < _currentListLevel) { _operationInProgressLabel.Visibility = ViewStates.Gone; _listView.Visibility = ViewStates.Visible; _currentListLevel = newLevel; _adapter.NotifyDataSetChanged(); } else if (newLevel > _currentListLevel && newLevel > 0) { _operationInProgressLabel.Visibility = ViewStates.Visible; _listView.Visibility = ViewStates.Gone; SKMultiStepSearchSettings searchObject = new SKMultiStepSearchSettings { MaxSearchResultsNumber = 25, OfflinePackageCode = _currentCountryCode, SearchTerm = "", ParentIndex = parentId, ListLevel = SKSearchManager.SKListLevel.ForInt(newLevel + 1) }; _currentListLevel = newLevel; _searchManager.MultistepSearch(searchObject); } }
/// <summary> /// An asynchoronous wrapper around Skobbler's MultistepSearch() /// </summary> /// <param name="stepObject">The multistep search object</param> /// <returns>An IList of SKSearchResult</returns> public async Task <IList <SKSearchResult> > MultistepSearchAsync(SKMultiStepSearchSettings stepObject) { var taskCompletionSource = new TaskCompletionSource <IList <SKSearchResult> >(); var searchListener = new SKSearchListener(taskCompletionSource); SetSearchListener(searchListener); MultistepSearch(stepObject); return(await taskCompletionSource.Task); }