public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this._inflater = inflater; View view = inflater.Inflate(Resource.Layout.ic_tab_shopping_list, null); ViewModel = new ShoppingListViewModel(ServiceRegistrar.ShoppingService(MainActivity.SqliteConnection)); _shoppingListView = view.FindViewById <ListView>(Resource.Id.ShoppingListView); var newItemEditText = view.FindViewById <EditText>(Resource.Id.NewItemEditText); Button addItemButton = view.FindViewById <Button>(Resource.Id.AddButton); _shoppingListView.Adapter = ViewModel.Items.GetAdapter(GetItemView); addItemButton.Click += delegate { var title = newItemEditText.Text; if (!string.IsNullOrEmpty(title)) { ViewModel.Add(new Item(title)); } newItemEditText.Text = ""; }; _shoppingListView.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs e) { ViewModel.Remove(this.ViewModel.Items.ElementAt(e.Position)); }; return(view); }
// deleting from the list: https://developer.xamarin.com/guides/ios/user_interface/tables/part_4_-_editing/#Swipe_to_Delete public override void CommitEditingStyle(UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath) { switch (editingStyle) { case UITableViewCellEditingStyle.Delete: _viewModel.Remove(_viewModel.Items.ElementAt(indexPath.Row)); tableView.DeleteRows(new NSIndexPath[] { indexPath }, UITableViewRowAnimation.Fade); break; case UITableViewCellEditingStyle.None: break; } }
void Should_Be_Able_To_Remove_Item() { // Arrange var shoppingService = new ShoppingService(_sqliteConnection); var vm = new ShoppingListViewModel(shoppingService); var item = new Item("some bought item"); vm.Add(item); // Act vm.Remove(item); // Assert Assert.DoesNotContain <Item>(vm.Items, x => x == item); Assert.DoesNotContain <Item>(shoppingService.Items, x => x == item); }
void Should_Be_Able_To_Remove_Item() { // Arrange var vm = new ShoppingListViewModel(_shoppingService); var item = new Item("some item to remove"); vm.Add(item); // Act vm.Remove(item); // Assert Assert.DoesNotContain <Item>(vm.Items, x => x == item); Assert.DoesNotContain <Item>(_shoppingService.Items, x => x == item); Assert.DoesNotContain <Item>(_shoppingService.BoughtItems, x => x == item); }
public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { ViewModel.Remove(ViewModel.Items.ElementAt(indexPath.Row)); tableView.ReloadData(); }