示例#1
0
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            var viewHolder = new RvItemHolder(handler.MauiContext);

            clickListener = new RvViewHolderClickListener(viewHolder, rvh =>
            {
                if (rvh.PositionInfo == null || rvh.PositionInfo.Kind != PositionKind.Item)
                {
                    return;
                }

                var p = new ItemPosition(rvh.PositionInfo.SectionIndex, rvh.PositionInfo.ItemIndex);

                rvh.PositionInfo.IsSelected = !rvh.PositionInfo.IsSelected;

                if (rvh.PositionInfo.IsSelected)
                {
                    handler.VirtualView?.SetSelected(p);
                }
                else
                {
                    handler.VirtualView?.SetDeselected(p);
                }
            });

            viewHolder.ItemView.SetOnClickListener(clickListener);

            return(viewHolder);
        }
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            var template = templates.ElementAtOrDefault(viewType);

            var templateContent = template.CreateContent();

            if (templateContent is VirtualViewCell viewCell)
            {
                var viewHolder = new RvItemHolder(viewCell, CreateViewContainer(parent.Context, viewCell.View));

                clickListener = new RvViewHolderClickListener(viewHolder, rvh =>
                {
                    if (rvh.PositionInfo == null || rvh.PositionInfo.Kind != PositionKind.Item)
                    {
                        return;
                    }

                    var p = new ItemPosition(rvh.PositionInfo.SectionIndex, rvh.PositionInfo.ItemIndex);

                    var selected = !rvh.ViewCell.IsSelected;

                    rvh.ViewCell.IsSelected = selected;

                    if (selected)
                    {
                        Element.SetSelected(p);
                    }
                    else
                    {
                        Element.SetDeselected(p);
                    }
                });

                viewHolder.ItemView.SetOnClickListener(clickListener);

                return(viewHolder);
            }

            VirtualViewCell.ThrowInvalidDataTemplateException();
            return(null);
        }