Lleva el siguiente set de imágenes en RestSharp

Estoy intentando crear una table interminable en Xamarin como cliente de Instagram. Sin embargo, cuando me desploop hacia la parte inferior de la pantalla, carga la misma segunda página de imágenes. Carga la primera página normalmente, luego carga la segunda página normalmente, sin embargo cuando bash cargar la tercera página carga la segunda página nuevamente. ¿Cómo arreglaría esto? Así es como bash cargarlo:

Account instagram = enumerable.First (); var instagramAccessToken = instagram.Properties ["access_token"].ToString (); var request = new RestRequest { RootElement = "data", Resource = "/users/self/feed" }; request.AddParameter ("access_token", instagramAccessToken); var client = new RestClient ("https://api.instagram.com/v1"); client.ExecuteAsync (request, response => { var rootObject = JsonConvert.DeserializeObject<RootObject> (response.Content); string nextURL = rootObject.pagination.next_url; //// Create Next Client var requestBack = new RestRequest (); var clientBack = new RestClient (nextURL); // GET Next Response clientBack.ExecuteAsync (requestBack, responseBack => { var rootObjectBack = JsonConvert.DeserializeObject<RootObject> (responseBack.Content); table.InvokeOnMainThread (() => { // Create list that contains newly attained JSON List<Datum> instagramData = rootObjectBack.data; // Create dummy list for other values List<Datum> sloppy = null; ((TableSource<Datum>)table.Source).instaData.AddRange (instagramData); table.ReloadData (); }); }); }); 

Aquí es donde detecto que el usuario se encuentra en la parte inferior de TableView

 public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath) { NetworkCheck netCheck = new NetworkCheck (); netCheck.runCheck (); bool log = netCheck.anyLoggedIn (); if (tableView.ContentSize.Height - UIScreen.MainScreen.Bounds.Height <= tableView.ContentOffset.Y) { // this is the last row in the last section Console.WriteLine ("~~~Bottom~~~"); FLDTRequest fldt = new FLDTRequest (); fldt.getPastInstagramFeed (tableView); } var cell = tableView.DequeueReusableCell(InstagramCell.Key) as InstagramCell; if (cell == null) { cell = new InstagramCell(); var views = NSBundle.MainBundle.LoadNib("InstagramCell", cell, null); cell = Runtime.GetNSObject(views.ValueAt(0)) as InstagramCell; } Datum h = instaData [indexPath.Row]; cell.BindData(h); return cell; } 

Ponga la callback en una function recursiva separada que sigue llamándose siempre y cuando haya una próxima. No sé la API de Instagram, pero algo así debería funcionar.

Ejecuta esto en viewdidload o algo (NO cada vez que scopes el background pero una vez)

 nextUrl = null; Account instagram = enumerable.First (); var instagramAccessToken = instagram.Properties ["access_token"].ToString (); var request = new RestRequest { RootElement = "data", Resource = "/users/self/feed" }; request.AddParameter ("access_token", instagramAccessToken); var client = new RestClient ("https://api.instagram.com/v1"); client.ExecuteAsync (request, resp => { PageRetrievedCallback(resp ); }); 

Función de callback

almacenar nextUrl como valor de class

 string nextUrl = null; public void PageRetrievedCallback(RestResponse response) { var rootObject = JsonConvert.DeserializeObject<RootObject> (response.Content); nextURL = rootObject.pagination.next_url; table.InvokeOnMainThread (() => { // Create list that contains newly attained JSON List<Datum> instagramData = rootObject.data; // Create dummy list for other values List<Datum> sloppy = null; ((TableSource<Datum>)table.Source).instaData.AddRange (instagramData); table.ReloadData (); }); } 

ejecute esto cuando detecte el background para cargar la página siguiente:

 if ( ! string.IsNullOrEmpty (nextURL) ) { var requestBack = new RestRequest (); var clientBack = new RestClient (nextURL); clientBack.ExecuteAsync (requestBack, resp => { PageRetrievedCallback(resp ); }); }