protected internal override async Task LoadMoreItemsAsync(ICollection <Repository> collection, uint suggestLoadCount) { try { int nextPage = this._currentPage + 1; GithubQueryResult <Repository> result = await this._service.GetRepositoriesAsync(this.Query, nextPage); if (result.ErrorMessage == null)// no error { Repository[] repositories = result.Items; foreach (Repository repository in repositories) { if (collection.Any(temp => temp.Id == repository.Id)) { // repository had loaded. } else { collection.Add(repository); } } if (collection.Count >= result.TotalCount) { // had load all the datas, raise has more items. this.RaiseHasMoreItemsChanged(false); } } // load and add success, set current page to nextpage. this._currentPage = nextPage; } catch { // you can log the exception here. } }
public Task <GithubQueryResult <Repository> > GetRepositoriesAsync(string query, int pageIndex = 1) { List <Repository> fakeRepositories = new List <Repository>(); for (int i = 0; i < 10; i++) { fakeRepositories.Add(new Repository() { Id = _rand.Next(), FullName = string.Format("{0}/{1}", TakeRandom(_fakeAuthorNames), TakeRandom(_fakeProjectNames)), Language = TakeRandom(_fakeLanguages), Description = "This is a fake item for design mode", HomeUrl = TakeRandom(_fakeHomeUrls), Star = _rand.Next(0xFF), UpdatedAt = DateTime.Now }); } GithubQueryResult <Repository> fakeQueryResult = new GithubQueryResult <Repository>() { Items = fakeRepositories.ToArray() }; return(Task.FromResult(fakeQueryResult)); }