public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { var cell = tableView.DequeueReusableCell(Key) as MetadataCell; if (cell == null) { cell = new MetadataCell(Key); } var data = _metadata[indexPath.Row]; cell.SetMetadata(data); return(cell); }
public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { var data = _metadata[indexPath.Row]; var destPath = MetadataCell.GetThumbnailPath(data.Path); if (_cts != null) { _cts.Cancel(); } _cts = new CancellationTokenSource(); Services.Dropbox.LoadFileAsync(data.Path, destPath, (progress) => { var cell = tableView.CellAt(indexPath) as MetadataCell; if (cell != null) { cell.SetProgress(progress); } }, _cts.Token).ContinueWith(t => { if (t.IsCanceled) { BeginInvokeOnMainThread(() => { var cell = tableView.CellAt(indexPath) as MetadataCell; if (cell != null) { cell.SetMetadata(data); } }); return; } else if (t.IsFaulted) { Console.WriteLine(t.Exception); return; } var controller = (DropboxViewController)Controller.Target; controller.ShowImage(destPath); }); }