Пример #1
0
        /// <summary>
        /// 更新界面
        /// </summary>
        public void NotifyDataSetChanged()
        {
            if (_Adapter == null)
            {
                return;
            }

            //获取当前可加载的个数
            _CurrentRow = _InitRow;
            int maxNum = _Column * _InitRow;

            if (maxNum > _Adapter.GetItemCount())
            {
                maxNum = _Adapter.GetItemCount();
            }
            _MaxRow       = (int)Math.Ceiling(_Adapter.GetItemCount() * 1f / _Column) + 2;
            vSBar.Maximum = _MaxRow;
            vSBar.Value   = 0;

            //清除旧的子项目
            flContent.Controls.Clear();


            _ViewHolderList = new List <ViewHolder>(maxNum - 1);
            //初始化第一次显示的项目,先加载maxNum行数据
            for (int i = 0; i < maxNum; i++)
            {
                //创建要显示的项目以及
                ViewHolder viewHolder = _Adapter.OnCreateViewHolder(_Adapter.GetDataType(i));
                //将数据显示到条目中
                _Adapter.OnBindViewHolder(viewHolder, i);
                //将控件显示到流布局中
                flContent.Controls.Add(viewHolder.Control);
                //开始加载条目
                viewHolder.StartLoad();
                //将ViewHolder存入集合,循环使用
                _ViewHolderList.Add(viewHolder);
            }
        }