首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在MvxTableView中添加多个区段?

在MvxTableView中添加多个区段,可以通过以下步骤实现:

  1. 创建一个继承自MvxTableViewSource的自定义TableViewSource类,用于管理表格的数据源和显示。
  2. 在自定义TableViewSource类中,重写Sections方法,返回表格的区段数。可以根据需要返回不同的区段数。
  3. 在自定义TableViewSource类中,重写GetItemsInSection方法,返回每个区段中的行数和数据。可以根据需要返回不同的行数和数据。
  4. 在视图控制器中,创建一个MvxTableView,并设置其数据源为自定义的TableViewSource类的实例。
  5. 在视图控制器中,使用Add方法将MvxTableView添加到视图层次结构中。

下面是一个示例代码:

代码语言:txt
复制
// 自定义TableViewSource类
public class CustomTableViewSource : MvxTableViewSource
{
    public CustomTableViewSource(UITableView tableView) : base(tableView)
    {
    }

    public override nint NumberOfSections(UITableView tableView)
    {
        // 返回区段数
        return 2;
    }

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        // 返回每个区段中的行数
        if (section == 0)
        {
            return 3;
        }
        else if (section == 1)
        {
            return 5;
        }
        else
        {
            return 0;
        }
    }

    protected override UITableViewCell GetOrCreateCellFor(UITableView tableView, NSIndexPath indexPath, object item)
    {
        // 创建和返回单元格
        var cell = (UITableViewCell)tableView.DequeueReusableCell("CellIdentifier", indexPath);
        cell.TextLabel.Text = $"Section {indexPath.Section}, Row {indexPath.Row}";
        return cell;
    }
}

// 视图控制器
public class MyViewController : MvxViewController
{
    private UITableView _tableView;

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        _tableView = new UITableView(View.Bounds, UITableViewStyle.Plain);
        _tableView.RegisterClassForCellReuse(typeof(UITableViewCell), "CellIdentifier");
        var source = new CustomTableViewSource(_tableView);
        _tableView.Source = source;

        View.AddSubview(_tableView);
    }
}

在这个示例中,我们创建了一个包含两个区段的MvxTableView,并使用自定义的TableViewSource类作为其数据源。在自定义的TableViewSource类中,我们重写了NumberOfSections方法和RowsInSection方法来返回区段数和每个区段中的行数。在GetOrCreateCellFor方法中,我们创建并返回了单元格,并设置了单元格的文本内容。

这样,就可以在MvxTableView中添加多个区段了。你可以根据需要修改自定义TableViewSource类中的方法来适应不同的区段和行数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Visualizing the impact of ordered vs. random index insertion in InnoDB (16 顺序插入和随机插入索引的影响可视化分析)

    许多dba都知道,按照“随机”顺序(或者实际上与按键排序有很大区别的任何顺序)构建索引的效率会低得多。然而,通常很难真正理解为什么会这样。通过innodb_ruby中的“- examples”可视化模式,可以很容易地可视化索引的结构。innodb_space的space-lsn-age-illustrate模式允许通过“LSN age”可视化空间文件中的所有页面,根据每个页面最近修改的情况生成类似空间文件的热图。 注意一个小的Ruby脚本generate_data_simple。rb用于生成下面使用的测试表。您还需要一个合理的monospace字体来正确地支持Unicode块字符,为此我衷心推荐Adobe的源代码专业版.

    02

    InnoDB with reduced page sizes wastes up to 6% of disk space(15.InnoDB减少页的大小会造成6%的磁盘空间浪费)

    InnoDB数据存储的研究中,我提到了MySQL的Bug #67963,题目是“InnoDB每16384页中浪费62页”。我说: InnoDB偶尔需要分配一些内部记账页面;每256mib数据对应2个页。为此,它分配一个区段(64个页面),分配所需的两个页面,然后将剩余的区段(62个空闲页面)添加到一个名为FREE_FRAG的区段列表中,该区段用于单页分配。几乎没有从该列表中分配页面,所以这些页面被浪费了。 这是相当微妙的,在任何大型InnoDB表中只浪费0.37%的磁盘空间,但尽管如此,这还是很有趣的,而且很容易修复。 浪费0.37%的磁盘空间是不幸的,但不是一个大问题……

    01

    InnoDB bugs found during research on InnoDB data storage(10.在研究InnoDB数据存储时发现的InnoDB bug)

    在研究InnoDB的存储格式和构建innodb_ruby和innodb_diagrams项目的过程中,我和Davi Arnaut发现了很多InnoDB的bug。我想我应该提几个,因为它们相当有趣。 由于innodb_space实用程序使重要的内部信息以一种以前从未有过的方式可见,所以这些漏洞在很大程度上可以被发现。使用它来检查生产表提供了许多信息,可以继续寻找导致错误的原因。当我们最初查看由innodb_space数据生成的按页空闲空间的图形图时,我们非常惊讶地看到许多页面不到一半的填充(包括许多几乎为空的页面)。经过大量研究,我们找到了所有我们发现的异常现象的原因。

    00

    The basics of InnoDB space file layout(3.InnoDB空间文件布局基础知识)

    在前面《学习InnoDB核心之旅》中,我介绍了innodb_diagrams项目来记录InnoDB的内部。它提供了这篇文章中用到的所有图表。 InnoDB的数据存储模型使用空间“Space”,在Mysql中通常被称为表空间,在InnoDB中有时也被称为文件空间。一个空间能够由操作系统级别的多个实际文件如ibData1、ibdata2组成。但是它只是一个逻辑文件。由多个物理文件被当作物理连接在一起的一个逻辑文件处理。 InnoDB的每个空间都分配一个32位的整数空间ID,它在许多不同的地方被用来引用这个空间。InnoDB总是有一个系统空间。它总是被分配空间ID为0.系统空间用于InnoDB需要的各种特殊日志记录。通过Mysql,InnoDB目前支持每个表文件空间的形式的额外空间。这将为每个Mysql表创建一个.ibd文件。在内部,这个.ibd文件实际上是一个功能完整的空间。它可以包含多个表,但是在Mysql的实现中,它门只包含一个表。也就是说通常是一张表至少有一个独立的ibd文件。

    02

    Docker如何管理数据

    http://os.51cto.com/art/201406/443516.htm 到目前我们介绍了一些Docker的基础概念, 知道了如何使用Docker的p_w_picpath, 也知道了如何在多个container间通过网络通讯. 在这章里我们将介绍如何在docker的container内管理数据以及如何在不同的container间共享数据。 我们将介绍两种主要的在docker中管理数据的方法: Data volumes Data volume container Data volumes 一个 data volume 就是一个在一个或者多个container里的特殊用途的目录。它绕过了 Union File System (译者: 这里不确定, 需要研究)为持久化数据、共享数据提供了下面这一些有用的特性: Data volumes 可以在不同的container之间共享和重用数据 对 Data volume 的修改及时生效(译者:data volumn是一个目录, 多个container都挂载这个目录, 具体的可以通过 docker inspect 看 volumne的信息) 对 data volume 修改内容在升级p_w_picpath的时候不会被包括进去 (译者:在docker的整个设计中p_w_picpath是一个无状态的, 这样对升级重用非常有利。而标记状态的数据, 比如数据库的数据, 生产的log之类的应该放到volume里。volume的持久化和恢复在下面有介绍, 是通过文件的形式的, 而不是通过p_w_picpath) Volumes 的持久化直到没有container使用他们 添加数据卷 你可以在docker run 的时候使用 -v 来添加一个 data volume。这个参数在docker run 的时候可以多次使用来添加多个 data volumes。让我们为我们的web application container挂载一个 volume。 $ sudo docker run -d -P --name web -v /webapp training/webapp python app.py 这里一个新的volume会创建到container里的 /webapp. (译者:如果你通过ssh或者通过 -i 登陆到你的container的一个shell里, 使用 ls /webapp 可以验证挂载成功了) 注意: 你也可以在Dockerfile里添加 VOLUME 字段,这样在创建一个新的p_w_picpath的 container是就会自动的创建新的volume. 安装一个目录作为数据卷 使用 -v 不仅能创建一个新的 volume, 还可以把宿主机一个目录mount到container里。 $ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py 这条命令会把本地目录 /src/webapp mount到container里的 /opt/webapp 目录上。用这个方法来测试程序非常 方便, 比如我们可以把我们的源代码通过这个方法mount到container里, 修改本地代码后立即就可以看到修改后的代码是如何在container里工作的了。宿主机的目录必须是绝对路径, 如果这个目录不存在docker会为你自动创建。 注意 这里是没法用 Dockerfile实现的, 因为这样的用法有悖于可移植性和共享. 因为本地目录就像他名字告诉我们的, 是和本地相关的, 不一定可以在所有的宿主机上工作.(译者: 鬼知道你在使用p_w_picpath的时候的host是啥样子的) Docker默认设置volume是可读写的,但是我们也可以mount一个目录为只读: $ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py 这里我们同样mount了 /src/webapp 目录, 但是我们加上了 ro 参数, 告诉docker这个volume是只读的. 创建并安装数据卷容器 如果你有一些持久化的数据, 并且想在不同的container之间共享这些数据, 或者想在一些没有持久化的container中使用, 最好的方法就是使用 Data Volumn Container, 在把数据mount到你的container里.(译者:如开篇译者提到的docker的container是无状态的, 也就是说标记状态的数据,例如:数据库数据, 应用程序的log 等等, 是不应该放到container里的, 而是放到 Data Volume Container里, 这点和f

    03

    potplayer快捷键

    potplayer播放器用起来感觉不错,搜集快捷键备用 快捷键 指令 ——————————————————– ” 播放->跳略播放->跳略播放 开|关 ‘ 播放->跳略播放->跳略播放设置… , 字幕->字幕同步(帧率)->滞后0.5 秒 Alt+, 字幕->字幕同步(帧率)->滞后50 秒 . 字幕->字幕同步(帧率)->超前0.5 秒 Alt+. 字幕->字幕同步(帧率)->超前50 秒 / 字幕->字幕同步(帧率)->复位 < 字幕->字幕同步(帧率)->滞后0.5 秒 > 字幕->字幕同步(帧率)->超前0.5 秒 [ 播放->AB 区段循环->设定起点 Alt+[ 播放->AB 区段循环->将起点步进 0.1 秒 \ 播放->AB 区段循环->区段循环 开|关 Alt+\ 播放->AB 区段循环->当前章节/标记/书签 区段循环 ] 播放->AB 区段循环->设定止点 Alt+] 播放->AB 区段循环->将止点步进 0.1 秒 ` 屏幕->迷你尺寸 { 播放->AB 区段循环->解除起点 } 播放->AB 区段循环->解除止点 Backspace 播放->定位->重新开始 Shift+Backspace 播放->定位->结束前30秒 Ctrl+Backspace 播放->定位->中段 Alt+Backspace DVD->标题菜单 Tab 配置/语言/其他->OSD信息 Shift+Tab 配置/语言/其他->简要信息 Enter 屏幕->全屏 Ctrl+Enter 屏幕->全屏+(拉伸) Ctrl+Shift+Enter 屏幕->全屏(其他显示器) Alt+Enter 屏幕->全屏 Ctrl+Alt+Enter 屏幕->全屏+(保持比例) Space 播放->播放|暂停 PgUp 电视->下一频道 Shift+PgUp 上一 书签/章节 Ctrl+PgUp 电视->前一收看频道 Alt+PgUp 字幕->字幕样式->字体 + PgDn 电视->上一频道 Shift+PgDn 下一 书签/章节 Ctrl+PgDn 电视->后一收看频道 Alt+PgDn 字幕->字幕样式->字体 – End 播放->定位->下一对白 Home 播放->定位->上一对白 Ctrl+Home 播放->定位->当前字幕起点 Alt+Home 字幕->字幕样式->复位 ← 播放->定位->步退5 秒 Shift+← 播放->定位->步退1 分 Ctrl+← 播放->定位->步退30 秒 Ctrl+Shift+← 播放->定位->上一关键帧 Alt+← 字幕->字幕样式->左移 Ctrl+Alt+← 播放->定位->步退5 分 ↑ 声音->音量 + Shift+↑ 声音->播放音量控制->主音量 + Alt+↑ 字幕->字幕样式->上移 Ctrl+Alt+↑ 声音->系统音量->波形音量 + Ctrl+Alt+Shift+↑ 声音->系统

    02

    基于WDM的专用USB设备的驱动程序开发[通俗易懂]

    1引言 目前对于诸如USB鼠标、键盘等这样的计算机标准外设,Windows系统已经提供了标准的驱动程序,用户无需再进行任何开发工作。而开发专用USB设备,需要开发专用的驱动程序。 Windows2000/XP操作系统不允许用户程序直接访问硬件设备。为了实现对硬件设备的访问和控制,必须通过操作系统所认可的驱动程序对硬件设备实现间接访问和控制。驱动程序通常被认为是操作系统的组成部分,所以,开发驱动程序有严格的规范,被认为是“计算机高手”的工作。而利用DDK进行基于WDM(Win32 Driver Model)驱动程序开发,使驱动程序的开发变成了一项比较简单的工作。 2 Win32驱动程序模型 USB设备驱动程序必须符合由Microsoft为Windows 98及其后版本所定义的Win32驱动程序模型(Win32 Driver Model,WDM)规格。这些驱动程序称为WDM驱动程序,扩展名为.sys。 WDM定义了一个基本模型,处理所有类型的数据。例如,USB类驱动程序为所有USB 设备提供了一个抽象的模型,并具有由所有客户驱动程序使用的定义好的接口。有了对所有设备类型共同的核心驱动程序模型,使驱动程序开发人员更容易从一种类型的设备移动到另外一种类型的设备上去。而且它也意味着驱动程序模型的内核实现尽可能是固定的。 USB是使用标准Windows系统USB类驱动程序访问USBDI(Windows USB驱动程序接口)的USB设备驱动程序。USBD.sys就是Windows系统中的USB类驱动程序,它使用UHCD.sys来访问通用的主控制器接口设备,或者使用OpenHCI.sys访问开放式主控制器接口设备。USBHUB.sys是根集线器和外部集线器的USB驱动程序。在PCI枚举器发现了USB主控制器之后,它会自动装入相关的驱动程序。 3 Windows USB驱动程序接口 大多数客户化的USB设备需要由用户来编写设备驱动程序,以响应内核态或用户应用程序的请求。在内核级,命令由客户驱动程序使用内部IOCTL发送给USB系统,例如IOCTL-INTERNAL-USB-SUBMIT-URB允许发出USB请求块(URB)给系统USB驱动程序。URB允许发出几个功能调用给USB系统。用户态USB实用程序也可以发出几个普通IOCTL给USB设备,目的仅仅是得到连接设备的信息。 3.1函数驱动程序 函数驱动程序(function driver)让应用程序与USB设备,通过API函数来沟通。这些API函数属于Windows的Win32子系统,Win32子系统同时也管理着执行应用程序。函数驱动程序与较低级的总线驱动程序沟通,总线驱动程序控制着硬件。 图1是应用程序与各个驱动程序,如何一起完成USB通信的结构图。当设备或子类别的要求超过类别驱动程序的能力时,会有辅助的过滤器驱动程序来类别驱动程序的能力。一个上层的过滤驱动程序位于类别驱动程序的上方。这样,从客户应用程序传来的要求,会先经过上层的过滤驱动程序,然后才传给类别函数驱动程序。一个下层的过滤驱动程序位于类别驱动程序和总线驱动程序之间,如图1。类别驱动程序会将要求传给下层的过滤驱动程序,然后再传给总线驱动程序。 图1应用程序与驱动程序完成USB通信的结构 通用串行总线驱动程序(USBD.SYS)是USB系统中负责管理通用串行总线的工作,位于主机上的一个软件。USBD负责控制所有的USB协议操作和高层的中断处理控制。在Windows98及以上版本中,Microsoft定义了一个新的设备驱动程序模型,称之为Windows设备驱动程序模型(WindowsDriver Model或WDM)。 USB客户应用程序也是一种设备驱动程序,通过定义的一个称之为USB接口的层间接口来访问其下方的USB软件。应用程序正是通过这些USB客户软件来实现与USB设备之间的通信。 针对USB客户应用程序的开发,相应版本的Windows操作系统的设备驱动程序开发包(Device Driver Developer’s Kit,即DDK)给出了相应的USB接口函数。并提供了对于这些函数具体使用的参考文档。 3.2 USBDI的IOCTL 为了编写USB设备驱动程序,通常还要在源代码中包含DDK所提供的几个头文件。这些头文件在Windows98下存放在/98DDK/inc/win98目录中,在Windows 2000下存放在/NTDDK/inc/win2000目录中。这些头文件的用途可以总结如下: usb100.h 定义了在USB设备驱动程序设计中所要用到的各种常量和数据结构。 Usbdi.h USBDI例程,其中包括对USBD和USB设备驱动程序通用的数据结构,适用于内核和用户模式。 Usbdlib.h URB构造和各种例程,定义了USBD所输出的服务,适用于内核和用户模式。 Usbioctl.h 给出了对IOC

    02
    领券