Android SmartTable表格框架1_如何使用
SmartTable
github地址:https://github.com/huangyanbin/smartTable
参考:https://juejin.cn/post/6844903549109813255
https://www.jianshu.com/p/bcfe030b77db
最近接到一个app项目的开发,我是.Net开发,刚开始学习Android+java,如在文中有错误、不对的地方还请大家指正。
在需求中要用到表格呈现的形式,百度了半天最终决定使用SmartTabel来进行开发。
故记录下如何使用SmartTable
功能介绍
快速配置自动生成表格;
自动计算表格宽高;
表格列标题组合;
表格固定左序列、顶部序列、第一行、列标题、统计行;
自动统计,排序(自定义统计规则);
表格图文、序列号、列标题格式化;
表格各组成背景、文字、网格、padding等配置;
表格批注;
表格内容、列标题点击事件;
缩放模式和滚动模式;
注解模式;
内容多行显示;
分页模式;
首尾动态添加数据;
丰富的格式化;
支持二维数组展示(用于类似日程表,电影选票等);
导入excel(支持颜色,字体,背景,批注,对齐,图片等基本Excel属性);
表格合并单元(支持注解合并,支持自动合并);
支持其他刷新框架SmartRefreshLayout;
可配置表格最小宽度(小于该宽度自动适配);
支持直接List或数组字段转列;
支持Json数据直接转换成表格;
支持表格网格指定行列显示;
支持自动生成表单。
如何使用
我使用的Android Studio 版本:Android Studio Arctic Fox | 2020.3.1 Patch 4
引用:添加 JitPack 到你的 build.gradle(Project: ***) 文件和settings.gradle文件
repositories {
maven { url 'https://www.jitpack.io' }
}
增加依赖 build.gradle(Module: *** .app)
dependencies {
implementation 'com.github.huangyanbin:SmartTable:2.2.0'
}

引用完后,在顶部会有一个提示,如下。点击“Sync Now”进行同步,或者点击这个小象的图标也可以。

使用方式(两种)
采用注解的形式
基本模式,手动配置行与列
1.注解方式
步骤一:在布局文件(.xml)中使用 SmartTable
<com.bin.david.form.core.SmartTable
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="match_parent" />
步骤二:定义表格(新建自定义User对象)
import com.bin.david.form.annotation.SmartColumn;
import com.bin.david.form.annotation.SmartTable;
//@SmartTable表格注解 @SmartColumn字段注解
@SmartTable(name="用户信息") //表格标题
public class User {
private int Id;
@SmartColumn(id =0,name = "姓名") //id排序,值越小越靠前。name列名
private String Name;
@SmartColumn(id =1,name = "年龄")
private int Age;
@SmartColumn(id =2,name = "手机号")
private String Phone;
public User(int id,String name,int age,String phone){
this.Id = id;
this.Name = name;
this.Age = age;
this.Phone = phone;
}
}
步骤三:绑定数据
//MainActivity文件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<User> userList = new ArrayList<>();
userList.add(new User(0,"Lisa",26,"260"));
userList.add(new User(1,"Nana",25,"250"));
userList.add(new User(2,"Mia",24,"240"));
com.bin.david.form.core.SmartTable table = findViewById(R.id.table);
table.setData(userList);
}
效果图:

2.基本方式,手动创建行与列
步骤一:在布局文件(.xml)中添加 SmartTable控件。同方式一
步骤二:User对象,注意这块注解已全部去掉。
public class User {
private int Id;
private String Name;
private int Age;
private String Phone;
public User(int id,String name,int age,String phone){
this.Id = id;
this.Name = name;
this.Age = age;
this.Phone = phone;
}
}
步骤三:
MainActivity文件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//region 给User对象添加数据
List<User> userList = new ArrayList<>();
userList.add(new User(0,"Lisa",26,"260"));
userList.add(new User(1,"Nana",25,"250"));
userList.add(new User(2,"Mia",24,"240"));
//endregion
//region 声明表格列
Column<String> coId = new Column<>("编号", "Id"); //注意,这里的“Id”要和User中字段名一致
//一致是因为需要用字段名来解析List对象
Column<String> coName = new Column<>("姓名", "Name");
Column<String> coAge = new Column<>("年龄", "Age");
Column<String> coPhone = new Column<>("手机号", "Phone");
//endregion
com.bin.david.form.core.SmartTable table = findViewById(R.id.table);
table.setZoom(true,1,0.5f); //开启缩放功能
table.getConfig().setShowXSequence(false); //去掉表格顶部字母
table.getConfig().setShowYSequence(false); //去掉左侧数字
//TableData对象,包含了(表格标题,数据源,列1,列2,列3,列4....好多列)
TableData<User> tableData = new TableData<>("用户信息", userList, coId,coName,coAge,coPhone);
//注意:绑定数据的方法setData换成了setTableData。不再是List对象而是TableData对象
table.setTableData(tableData);
}
效果图:

Android SmartTable表格框架1_如何使用的更多相关文章
- Android 内存缓存框架 LruCache 的实现原理,手写试试?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在之前的文章里,我们聊到了 LRU 缓存淘汰算法,并且分析 Java 标准库中支持 ...
- [Android]Android端ORM框架——RapidORM(v2.1)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...
- [Android]Android端ORM框架——RapidORM(v2.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...
- [Android]依赖注入框架google的dagger
分享一下Android依赖注入框架--Google升级版Dagger2框架 Google的Dagger2是对上一版squareup的Dagger改版,话不多说直接上项目代码. Dagger2源码 Da ...
- [Android]依赖注入框架squareup的dagger
分享一下Android依赖注入框架--Dagger使用 Dagger源码 Dagger1-Demo 希望能给大家的开发带来帮助.
- Android动画学习(一)——Android动画系统框架简介
2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其 ...
- Android开源测试框架学习
近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...
- Android Http请求框架二:xUtils 框架网络请求
一:对Http不了解的请看 Android Http请求框架一:Get 和 Post 请求 二.正文 1.xUtils 下载地址 github 下载地址 : https://github.com/w ...
- [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法
一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...
- 60.Android通用流行框架大全
转载:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的 ...
随机推荐
- Oracle数据库 insert 插入数据 显示问号乱码的解决办法
一.问题描述 插入的中文数据 显示成问号(乱码),其他语言如老挝文.柬文等都一样. 二.解决方案 plsql插入oracle数据乱码问题处理起来其实很简单,因为乱码问题一般都是由于编码不一致导致的,我 ...
- C++内存重叠
内存重叠是指在内存中存在两个或多个区域,它们的地址范围有交叉部分.在 C++ 中,内存重叠可能会导致程序出现不可预期的行为,因此我们需要了解它的原因和如何避免. 内存重叠的原因 内存重叠的主要原因是指 ...
- 全局唯一ID的实现方案
为什么需要保证唯一ID? 在单机服务架构中,数据库的每一个业务表的主键ID都是允许自增的,但是在分布式服务架构的分库分表的设计,使得多个库或者多个表存储了相同的业务表,如果没有一个全局的唯一ID设计方 ...
- 【PWN】初见BROP
前言|与BROP的相遇 第一次BROP,它让我觉得pwn,或者说网安很妙,也很折磨 在遇到它之前,之前接触的题目都是简单的栈溢出,感觉没有啥有趣的,很简单,找gadget溢出就可以,一切都看得见 可遇 ...
- flask配置config详解
flask系列讲座与2017年12月6日开始,每周一篇.第三篇其中讲述flask的配置方法.使用app.config.from_object()方法,似乎很神奇.如果明白背后逻辑,实际上很自然.涉及代 ...
- vue事件监听
v-on <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- java获取到heapdump文件后,如何快速分析?
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介 在之前的OOM问题复盘之后,本周,又一Java服务出现了内存问题,这次问题不严重,只会触发堆内存占用高报警 ...
- SkyWalking的学习之一
SkyWalking的学习之一 前言 最近在学习应用调优诊断等内容. 现在实际工作中实质上的拆分和微服务在售前阶段 所以真正用到链路的地方比较少. 但是人生都是要向前看的. 想着一方面提高自己. 一方 ...
- Java SE 20 新增特性
Java SE 20 新增特性 作者:Grey 原文地址: 博客园:Java SE 20 新增特性 CSDN:Java SE 20 新增特性 源码 源仓库: Github:java_new_featu ...
- 加速 AI 训练,如何在云上实现灵活的弹性吞吐
AI 已经成为各行各业软件研发的基础,带来了前所未有的效率和创新.今天,我们将分享苏锐在AWS量化投研行业活动的演讲实录,为大家介绍JuiceFS 在 AI 量化投研领域的应用经验,也希望为其他正在云 ...