Example #1
0
 public Node(CompositeAdapter adapter, Func <LayoutInflater, ViewGroup, View> viewFactory,
             bool isSingleObject)
 {
     Adapter        = adapter;
     ViewFactory    = viewFactory;
     IsSingleObject = isSingleObject;
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            var rv = FindViewById <RecyclerView>(Resource.Id.rv);

            rv.SetLayoutManager(new LinearLayoutManager(this));
            rv.AddItemDecoration(new DividerItemDecoration(this, RecyclerView.Vertical));

            var adapter = new CompositeAdapter
            {
                HasStableIds = true // do not use if they are not really stable
            };

            _header = adapter.WithView(Resource.Layout.header1)
                      .Holding(x => new { text = (TextView)x })
                      .Bindable <string>((x, v) => x.text.Text = v)
                      .AsUpdateable;

            adapter.WithView(Resource.Layout.header2)
            .Holding(x => new
            {
                btn   = (Button)x,
                click = new HandlerHolder()
            })
            .WithSubscriptions(
                x => x.btn.Click += x.click.Set(Increase),
                x => x.btn.Click -= x.click.Unset());

            _list = adapter.WithList <string>(Resource.Layout.text_item)
                    .Holding(
                x => new { text = x.FindViewById <TextView>(Resource.Id.text) },
                (x, v) => x.text.Text = v)
                    .WithId(x => x.GetHashCode()) // kek puk
                    .AsUpdateable;

            adapter.WithView(Resource.Layout.footer);

            Increase();
            rv.SetAdapter(adapter);
        }
 public NodeBuilder(
     CompositeAdapter adapter, Func <LayoutInflater, ViewGroup, View> viewFactory, bool isSingleObject)
 {
     Node = new Node(adapter, viewFactory, isSingleObject);
 }