# awtk-widget-table-view **Repository Path**: zlgopen/awtk-widget-table-view ## Basic Information - **Project Name**: awtk-widget-table-view - **Description**: awtk-widget-table-view - **Primary Language**: C - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-04 - **Last Updated**: 2025-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # awtk-widget-table-view AWTK 的 ListView 是一个非常强大的控件,在列表项目中可以放比如文本、图片、编辑器、进度条、滑块和下拉框等各种控件。 但是 ListView 最大的问题是,每个列表项都必须事先创建好,这就导致 ListView 显示大量数据时,存在下列问题: * 加载速度慢。 * 比较耗内存。 所以 ListView 在 PC 可以用于显示少于 10K 的数据,而在嵌入式平台上,只能用于显示少于 500 条记录的数据。 TableView 控件就是为了解决 ListView 控件的不足,具有如下特点: * 列表项无需事先创建。 * 数据无需全部加载到内存。 * 轻松支持数千万条数据记录。 * 表格中可以放文本、图片、编辑器、进度条、滑块和下拉框等各种控件。 > 目前使用 32 位数据表示虚拟高度,最大记录数限制为 5000 万条记录。 ![](docs/images/ui.png) ## 准备 1. 获取 awtk 并编译 ``` git clone https://github.com/zlgopen/awtk.git cd awtk; scons; cd - ``` ## 运行 1. 生成示例代码的资源 ``` python scripts/update_res.py all ``` > 也可以使用 Designer 打开项目,之后点击 “打包” 按钮进行生成; > 如果资源发生修改,则需要重新生成资源。 如果 PIL 没有安装,执行上述脚本可能会出现如下错误: ```cmd Traceback (most recent call last): ... ModuleNotFoundError: No module named 'PIL' ``` 请用 pip 安装: ```cmd pip install Pillow ``` 2. 编译 ``` scons ``` > 完整编译选项请参考[编译选项](https://github.com/zlgopen/awtk-widget-generator/blob/master/docs/build_options.md) 3. 运行 * 基本示例 ``` ./bin/demo ``` * csv 文件查看和编辑 ``` ./bin/csv_view ``` ## 如何使用 table_view ### 使用 xml 创建 table_view ![](./docs/images/table_view1.jpg) table\_view 由 table\_header(可选)、table\_client 和 scroll\_bar 组成。 * table\_view\_t 是表格视图的外壳,它的主要功能是协调 table\_client\_t 和滚动条。 * table\_header\_t 是表格的标题,它其实只是一个普通的容器,完全可以用 view 代替,但用 table\_header\_t 更具可读性。 * table\_client\_t 是表格的数据区,它是一个 table\_row\_t 的容器。 * table\_row\_t 表示表格中的一行,它只是个容器,里面可以文本、图片、编辑器、进度条、滑块和下拉框等各种控件。 在 table\_client 中,只需要写一个 table\_row,这个 table\_row 只是作为模版,由 table\_client 根据需要创建。 示例: ```xml