示例#1
0
        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);
        }