public override void ViewDidLoad() { base.ViewDidLoad(); var vm = new SpeakersModel(); CustomTableView.RowHeight = 70; CustomTableView.RegisterNibForCellReuse(CustomTableViewCell.Nib, nameof(CustomTableViewCell)); GetSpeakersButton.TouchUpInside += async(sender, e) => { // ボタンを利用不可、グルグルを表示にします。 GetSpeakersButton.Enabled = false; SVProgressHUD.Show(); await vm.GetSpeakersAsync(); // TableViewのSourceをCustomTableViewSourceでnewします。 CustomTableView.Source = new CustomTableViewSource(this, vm.Speakers); CustomTableView.ReloadData(); // グルグルを非表示、ボタンを利用可にします。 SVProgressHUD.Dismiss(); GetSpeakersButton.Enabled = true; }; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); var speakers = new SpeakersModel(); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); var listView = FindViewById <ListView>(Resource.Id.speakersListView); // CustomAdapterを作成して適用 var speakersAdapter = new SpeakersListAdapter(this, tableItems); listView.Adapter = speakersAdapter; var progressBar = FindViewById <ProgressBar>(Resource.Id.progressBar); var getSpeakersButton = FindViewById <Button>(Resource.Id.getSpeakersButton); getSpeakersButton.Click += async(object sender, EventArgs e) => { // クルクルを表示、ボタンを利用不可にします。 getSpeakersButton.Enabled = false; progressBar.Visibility = ViewStates.Visible; // ModelのGetSpeakersメソッドを実行します。 await speakers.GetSpeakersAsync(); tableItems.Clear(); foreach (var speaker in speakers.Speakers) { var image = await this.GetImageBitmapFromUrl(speaker.Avatar); tableItems.Add(new TableItem(speaker.Name, speaker.Title, image)); } // ListAdapterに内容の変更を通知します。 speakersAdapter.NotifyDataSetChanged(); // クルクルを非表示、ボタンを利用可にします。 progressBar.Visibility = ViewStates.Invisible; getSpeakersButton.Enabled = true; }; }
public async Task <ActionResult> Speakers() { var model = new SpeakersModel { SpeakersCollections = new List <List <Speaker> >() }; var speakers = _speakerService.Value.GetSpeakers(); var i = 0; foreach (var speaker in speakers) { List <Speaker> list; if (i == 0) { list = new List <Speaker>(); model.SpeakersCollections.Add(list); } else { list = model.SpeakersCollections.Last(); } list.Add(speaker); if (i == 3) { i = 0; } else { i++; } } return(View(model)); }
public override void ViewDidLoad() { base.ViewDidLoad(); var speakers = new SpeakersModel(); SpeakersTableView.RowHeight = 70; SpeakersTableView.RegisterNibForCellReuse(SpeakersTableViewCell.Nib, nameof(SpeakersTableViewCell)); GetSpeakersButton.TouchUpInside += async(object sender, EventArgs e) => { // クルクルを表示、ボタンを利用不可にします。 GetSpeakersButton.Enabled = false; SVProgressHUD.Show(); // vmのGetSpeakersメソッドを実行します。 await speakers.GetSpeakersAsync(); // Name、Title、UIImageのプロパティを持つTableItemのListにデータを移し替えます。 // 移し替える前にImageUrlをUIImageに変換して格納します。 var tableItems = new List <TableItem>(); foreach (var x in speakers.Speakers) { var image = await this.LoadImage(x.Avatar); tableItems.Add(new TableItem(x.Name, x.Title, image)); } // TableViewのSourceをCustomTableViewSourceでnewします。 SpeakersTableView.Source = new SpeakersTableViewSource(tableItems); SpeakersTableView.ReloadData(); // クルクルを非表示、ボタンを利用可にします。 SVProgressHUD.Dismiss(); GetSpeakersButton.Enabled = true; }; }