RootViewController.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Drawing;
  3. using Foundation;
  4. using UIKit;
  5. using TwitterSearch.Portable.ViewModels;
  6. using SDWebImage;
  7. namespace TwitterSearch.iOS
  8. {
  9. public partial class RootViewController : UIViewController, IUITableViewDataSource
  10. {
  11. public RootViewController(IntPtr handle)
  12. : base(handle)
  13. {
  14. }
  15. public override void ViewDidLoad()
  16. {
  17. base.ViewDidLoad();
  18. activityIndicator = new UIActivityIndicatorView(new CoreGraphics.CGRect(0, 0, 20, 20));
  19. activityIndicator.ActivityIndicatorViewStyle = UIActivityIndicatorViewStyle.White;
  20. activityIndicator.HidesWhenStopped = true;
  21. NavigationItem.LeftBarButtonItem = new UIBarButtonItem(activityIndicator);
  22. TableViewTweets.WeakDataSource = this;
  23. }
  24. private UIActivityIndicatorView activityIndicator;
  25. private TwitterViewModel viewModel = new TwitterViewModel();
  26. async partial void ButtonGetTweets_TouchUpInside(UIButton sender)
  27. {
  28. ButtonGetTweets.Enabled = false;
  29. activityIndicator.StartAnimating();
  30. TextFieldSearch.ResignFirstResponder();
  31. await viewModel.LoadTweetsCommand(TextFieldSearch.Text.Trim());
  32. TableViewTweets.ReloadData();
  33. activityIndicator.StopAnimating();
  34. ButtonGetTweets.Enabled = true;
  35. }
  36. public UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
  37. {
  38. var cell = tableView.DequeueReusableCell("tweet");
  39. var tweet = viewModel.Tweets[indexPath.Row];
  40. cell.TextLabel.Text = tweet.DisplayName;
  41. cell.DetailTextLabel.Text = tweet.Text;
  42. cell.ImageView.SetImage(
  43. url: new NSUrl(tweet.Image),
  44. placeholder: UIImage.FromBundle("Icon-Small.png")
  45. );
  46. return cell;
  47. }
  48. public nint RowsInSection(UITableView tableView, nint section)
  49. {
  50. return viewModel.Tweets.Count;
  51. }
  52. public void RowSelected(UITableView tableView, NSIndexPath indexPath)
  53. {
  54. viewModel.Speak(indexPath.Row);
  55. }
  56. }
  57. }