【Android -- 开源库】表格 SmartTable 的基本使用
介绍
1. 功能
- 快速配置自动生成表格;
- 自动计算表格宽高;
- 表格列标题组合;
- 表格固定左序列、顶部序列、第一行、列标题、统计行;
- 自动统计,排序(自定义统计规则);
- 表格图文、序列号、列标题格式化;
- 表格各组成背景、文字、网格、padding等配置;
- 表格批注;
- 表格内容、列标题点击事件;
- 缩放模式和滚动模式;
- 注解模式;
- 内容多行显示;
- 分页模式;
- 首尾动态添加数据;
- 丰富的格式化;
- 支持二维数组展示(用于类似日程表,电影选票等);
- 导入excel(支持颜色,字体,背景,批注,对齐,图片等基本Excel属性);
- 表格合并单元(支持注解合并,支持自动合并);
- 支持其他刷新框架SmartRefreshLayout;
- 可配置表格最小宽度(小于该宽度自动适配);
- 支持直接List或数组字段转列;
- 支持Json数据直接转换成表格;
- 支持表格网格指定行列显示;
- 支持自动生成表单。
Android 自动生成表格框架,GitHub 地址: SmartTable
2. 基本方法
Column 类的常用方法
- setAutoCount(boolean isAutoCount):设置自动排序(默认升序)
- isReverseSort:是否是反序排列
- setComparator:设置排序比较
- setCountFormat:统计格式化
- OnColumnItemClickListener:列内容点击事件
- setFixed:滑动到表格左边时固定列
- setTextAlign:设置开启自动合并
- setMaxMergeCount:设置开启最大数量
- setDrawFormat:设置绘制样式格式化
- setFormat:设置文字格式化
TableData 类常用方法
- setSortColumn:设置排序列
- settitleDrawFormat:设置列标题格式化
- setXSequenceFormat:设置顶部序列号格式化
- setYSequenceFormat:设置左边序列号格式化
- setShowCount:设置是否显示统计
- setTitleDrawFormat:设置列标题绘制格式化
- setXSequenceFormat: 设置 X 序号行文字格式化
- setYSequenceFormat : 设置 Y 序号行文字格式化
- setUserCellRange(List userCellRange) :设置添加自定义合并规则
TableConfig 类常用方法
- setContentStyle :设置内容文字样式
- setYSequenceStyle :设置左边序列文字样式
- setXSequenceStyle :设置顶部序列文字样式
- setColumnTitleStyle :设置列标题文字样式
- setTableTitleStyle :设置表格标题文字样式
- setCountStyle :设置统计行样式
- setColumnTitleGridStyle :设置列标题网格样式
- setGridStyle :设置内容网格样式
- setVerticalPadding :设置网格列 padding
- setHorizontalPadding :设置网格行 padding
- setYSequenceBackgroundColor :设置左序列背景
- setXSequenceBackgroundColor :设置横序行背景
- setColumnTitleBackgroundColor :设置列标题背景
- setContentBackgroundColor :设置内容背景
- setCountBackgroundColor :设置统计行背景
- setFixedYSequence :固定左侧
- setFixedXSequence :固定顶部
- setFixedTitle :固定列标题
- setFixedCountRow :固定统计行
- setColumnTitleVerticalPadding :列标题上下 padding
- setColumnTitleHorizontalPadding :增加列标题左右 padding
- setSequenceGridStyle :序列网格样式
- columnTitleGridStyle :列标题网格样式
- setShowXSequence :设置是否显示顶部序号列
- setShowYSequence :设置是否显示左侧序号列
- setShowTableTitle :设置是否显示表格标题
- isShowColumnTitle :设置是否显示列标题
- setMinTableWidth :设置表格最小宽度
SmartTable 类的常用方法
- setOnColumnClickListener :设置列标题点击事件
- setSortColumn :设置排序列
- setZoom(boolean zoom,float maxZoom,float minZoom) :设置是否开启缩放
- addData(List t, boolean isFoot) :添加新数据
- setSelectFormat :设置选中 Cell 样式
- notifyDataChanged :重新计算布局
使用
0. 效果图

1. 前期准备
1. 在项目 build.gradle 添加 JitPack repository :
repositories {...maven { url 'https://www.jitpack.io' }}
2. 在 app/build.gradle 添加如下依赖库:
implementation 'com.github.huangyanbin:SmartTable:2.2.0'
2. 使用
1. 在布局文件中使用
<com.bin.david.form.core.SmartTableandroid:id="@+id/table"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/>
2. 通过注解的方式模拟数据
@SmartTable(name = "销售计划表")
public class UserInfo {// name:版块名称,count:目标值,restaurant:餐饮数量,ka:KA数量,wholesale:流通批发数量,industry:工业加工数量,other:其它数量@SmartColumn(id = 0, name = "部门/渠道", autoMerge = true)private String city;@SmartColumn(id = 1, name = "板块")private int name;@SmartColumn(id = 2, name = "目标值")private int count;@SmartColumn(id = 3, name = "餐饮")private int restaurant;@SmartColumn(id = 4, name = "KA")private int ka;@SmartColumn(id = 5, name = "流通批发")private int wholesale;@SmartColumn(id = 6, name = "工业加工")private int industry;@SmartColumn(id = 7, name = "其他")private int other;public UserInfo(String city, int name, int count, int restaurant, int ka, int wholesale, int industry, int other) {this.city = city;this.name = name;this.count = count;this.restaurant = restaurant;this.ka = ka;this.wholesale = wholesale;this.industry = industry;this.other = other;}
}
3. 使用
public class TableActivity extends AppCompatActivity {private SmartTable table;private List<UserInfo> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_table);initData();table = findViewById(R.id.table);table.setData(list);table.getConfig().setContentStyle(new FontStyle(50, Color.BLUE));}private void initData() {list = new ArrayList<>();list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("乌鲁木齐",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));list.add(new UserInfo("沈阳",100, 150, 50, 240, 1100, 450, 23458));}
}
相关文章:
【Android -- 开源库】表格 SmartTable 的基本使用
介绍 1. 功能 快速配置自动生成表格;自动计算表格宽高;表格列标题组合;表格固定左序列、顶部序列、第一行、列标题、统计行;自动统计,排序(自定义统计规则);表格图文、序列号、列标…...
自动化测试实战篇(9),jmeter常用断言方法,一文搞懂9种测试字段与JSON断言
Jmeter常用的断言主要有,JSON断言和响应断言这两种方式。 断言主要就是帮助帮助人工进行快速接口信息验证避免繁杂的重复的人工去验证数据 第一种响应断言Apply to:表示应用范围测试字段:针对响应数据进行不同的匹配响应文本响应代码响应信息…...
vue-virtual-scroll-list虚拟列表
当DOM中渲染的列表数据过多时,页面会非常卡顿,非常占用浏览器内存。可以使用虚拟列表来解决这个问题,即使有成百上千条数据,页面DOM元素始终控制在指定数量。 一、参考文档 https://www.npmjs.com/package/vue-virtual-scroll-li…...
C++学习笔记(以供复习查阅)
视频链接 代码讲义 提取密码: 62bb 文章目录1、C基础1.1 C初识(1) 第一个C程序(2)注释(3)变量(4)常量(5)关键字(6)标识符命名规则1.2 …...
备份时间缩短为原来 1/4,西安交大云数据中心的软件定义存储实践
XEDP 统一数据平台为西安交通大学云平台业务提供可靠的备份空间和强大的容灾能力,同时确保数据安全。西安交通大学(简称“西安交大”)是我国最早兴办、享誉海内外的著名高等学府,是教育部直属重点大学。学校现有兴庆、雁塔、曲江和…...
我国近视眼的人数已经超过了六亿,国老花眼人数超过三亿人
眼镜是一种用于矫正视力问题、改善视力、减轻眼睛疲劳的光学器件,在我们的生活中不可忽略的一部分,那么我国眼镜市场发展情况是怎样了?下面小编通过可视化互动平台对我国眼镜市场的状况进行分析。我国是一个近视眼高发的国家,据统…...
设计模式(十八)----行为型模式之策略模式
1、概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发&a…...
VUE3入门基础:input元素的type属性值说明
说明 在Vue 3中,<input>元素的type属性可以设置不同的类型,以适应不同的输入需求。 常见的type属性取值如下: text:默认值,用于输入文本。password:用于输入密码,输入内容会被隐藏。em…...
关于供应链,一文教你全面了解什么是供应链
什么是供应链?供应链是指产品生产和流通过程中所涉及的原材料供应商、生产商、分销商、零售商以及最终消费者等成员通过与上游、下游成员的连接 (linkage) 组成的网络结构。也即是由物料获取、物料加工、并将成品送到用户手中这一过程所涉及的企业和企业部门组成的一…...
Scope作用域简单记录分析
类型 singleton 单例作用域 prototype 原型作用域 request web作用域,请求作用域,生命周期跟request相同,请求开始bean被创建,请求结束bean被销毁 session web作用域,会话作用域,会话开始bean被创建,会话结束bean被销毁 application web作用域,应用程序作用域,应用程序创建…...
ChatGPT创作恋爱甜文
林欣是一个长相可爱、性格呆萌的小姑娘,她年纪轻轻就失去了父母,独自一人面对世界的冷漠和残酷。 虽然经历了这样的打击,但她并没有沉沦,反而更加努力地去生活。 她找到了一份服务员的工作,每天在餐厅里穿梭…...
贝叶斯优化及其python实现
贝叶斯优化是机器学习中一种常用的优化技术,其目的是在有限步数内寻找函数的最大值或最小值。它可以被视为在探索不同参数配置与观察这些配置结果之间寻求平衡点的过程。基本思想是将我们在过去的观察和体验,传递到下一个尝试中,从而在等待数…...
Lombok使用@Builder无法build父类属性
文章目录问题描述解决方案使用示例lombok Builder注解和build父类属性问题1、简介2.使用3、Builder注解对类做了什么?问题描述 实体类使用Lombok的Builder来实现Builder模式,但是如果使用了extend继承,则子类无法通过Builder来Build父类属性…...
Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk
文章目录硬件安装Ubuntu Server20.04下载rpiboot工具下载imager刷写系统配置USB配置WIFI开机安装桌面配置wifi配置串口安装ROS安装mavros安装MAVSDK-PythonInternet设置最后参考: https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard…...
后端开发过程中的安全问题
安全问题是木桶效应,整个系统的安全等级取决于安全性最薄弱的那个模块。在写业务代码的时候,要从我做起,建立最基本的安全意识,从源头杜绝低级安全问题。 1、数据源头的安全处理 对于 HTTP 请求,我们要在脑子里有一个…...
基于Hyperledger Fabric的学位学历认证管理系统
基于Hyperledger Fabric的学位学历认证管理系统 项目源码:https://github.com/Pistachiout/Academic-Degree-BlockChain 一、选题背景 学历造假、认证造假等是一个全球日益普遍的现象,不仅对社会产生了巨大的负面影响,同时也极大增加了企业…...
jq条件判断验证,正则表达式
// 判断是否包含为至少8位及以上字符,大小写字母及特殊字符 jQuery.validator.addMethod("isPwd", function (value, element) { var pwdRegex new RegExp((?.*[0-9])(?.*[A-Z])(?.*[a-z])(?.*[^a-zA-Z0-9]).{8,30}); return this.optional(elemen…...
23.3.9打卡 AtCoder Beginner Contest 259
A题 题解 对于x特判一下就好 代码 void solve() {ll x,d;cin>>n>>m>>x>>t>>d;if(n>m){nmin(n,x);if(n<m){cout<<t;return;}cout<<(m-n)*dt;}else{mmin(m,x);cout<<(m-n)*dt;}return; }B 三角函数全还给高中老师了 题…...
JS - this指向
一 this 指向有哪几种 详细可见:https://juejin.cn/post/6844903805587619854 (文章归类this指向为四大类) https://www.jianshu.com/p/66eb9b21105d this是什么?this 就是一个指针,指向调用函数的对象。 1.默认绑定…...
低代码有哪些典型应用场景?
低代码有哪些典型应用场景? 低代码是一种全新的应用开发方式,它通过可视化的拖拽式界面,将传统的繁琐代码编写转化为简单的拖拽操作,让非技术人员也能够快速地开发出应用程序。 随着数字化转型的不断加速,低代码平台…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
