public void TestAdd1()
        {
            var lst = new List <ToDo>();

            lst.Add(new ToDo()
            {
                Id = 1, Text = "ccc", DueDate = new DateTime(2017, 5, 3), CreatedAt = new DateTime(2017, 4, 1), Completed = false
            });
            lst.Add(new ToDo()
            {
                Id = 2, Text = "bbb", DueDate = new DateTime(2017, 5, 1), CreatedAt = new DateTime(2017, 4, 2), Completed = true
            });
            lst.Add(new ToDo()
            {
                Id = 3, Text = "aaa", DueDate = new DateTime(2017, 5, 2), CreatedAt = new DateTime(2017, 4, 3), Completed = false
            });
            var items = new ToDoFiltableCollection(lst);

            // 作成日順にソートする
            items.SetFilter(true, 0);
            Assert.AreEqual(3, items.Count);
            Assert.AreEqual("aaa", items[0].Text);
            // 新しい項目を追加する
            items.Add(new ToDo()
            {
                Id = 100, Text = "new", DueDate = null, CreatedAt = new DateTime(2017, 5, 1), Completed = false
            });
            // 追加した項目が先頭になる
            Assert.AreEqual(4, items.Count);
            Assert.AreEqual("new", items[0].Text);
        }
        public void TestInit()
        {
            var items = new ToDoFiltableCollection();

            Assert.AreEqual(0, items.Count);

            items.Add(new ToDo()
            {
                Id = 1, Text = "ccc", DueDate = new DateTime(2017, 5, 1), CreatedAt = new DateTime(2017, 4, 3)
            });
            Assert.AreEqual(1, items.Count);
            items.Add(new ToDo()
            {
                Id = 2, Text = "bbb", DueDate = new DateTime(2017, 5, 2), CreatedAt = new DateTime(2017, 4, 2)
            });
            Assert.AreEqual(2, items.Count);
            items.Add(new ToDo()
            {
                Id = 3, Text = "aaa", DueDate = new DateTime(2017, 5, 3), CreatedAt = new DateTime(2017, 4, 1)
            });
            Assert.AreEqual(3, items.Count);

            var lst = new List <ToDo>();

            lst.Add(new ToDo()
            {
                Id = 1, Text = "ccc", DueDate = new DateTime(2017, 5, 1), CreatedAt = new DateTime(2017, 4, 3)
            });
            lst.Add(new ToDo()
            {
                Id = 2, Text = "bbb", DueDate = new DateTime(2017, 5, 2), CreatedAt = new DateTime(2017, 4, 2)
            });
            lst.Add(new ToDo()
            {
                Id = 3, Text = "aaa", DueDate = new DateTime(2017, 5, 3), CreatedAt = new DateTime(2017, 4, 1)
            });
            items = new ToDoFiltableCollection(lst);
            Assert.AreEqual(3, items.Count);
        }
        protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            switch (requestCode)
            {
            case 1:     // 項目を選択時
                if (resultCode == Result.Ok)
                {
                    var v    = data.GetStringExtra("data");
                    var item = Newtonsoft.Json.JsonConvert.DeserializeObject <ToDo>(v);
                    // データを更新する
                    items.Update(item.Id, item);
                    // アダプターを更新
                    adapter.NotifyDataSetChanged();
                    // 内部ストレージに保存
                    this.Save();
                }
                break;

            case 2:     // 新規作成時
                if (resultCode == Result.Ok)
                {
                    var v    = data.GetStringExtra("data");
                    var item = Newtonsoft.Json.JsonConvert.DeserializeObject <ToDo>(v);
                    // データを更新する
                    item.Id = items.Count + 1;
                    items.Add(item);
                    // アダプターを更新
                    adapter.NotifyDataSetChanged();
                    // 内部ストレージに保存
                    this.Save();
                }
                break;

            case 3:     // 設定画面からの戻り
                if (resultCode == Result.Ok)
                {
                    setting.DispCompleted = data.GetBooleanExtra("DispCompleted", true);
                    setting.SortOrder     = data.GetIntExtra("SortOrder", 0);
                    items.SetFilter(setting.DispCompleted, setting.SortOrder);
                    // アダプターを更新
                    adapter.NotifyDataSetChanged();
                }
                break;

            default:
                break;
            }
        }