SmartTable

github地址:https://github.com/huangyanbin/smartTable

参考:https://juejin.cn/post/6844903549109813255

   https://www.jianshu.com/p/bcfe030b77db

最近接到一个app项目的开发,我是.Net开发,刚开始学习Android+java,如在文中有错误、不对的地方还请大家指正。
在需求中要用到表格呈现的形式,百度了半天最终决定使用SmartTabel来进行开发。
故记录下如何使用SmartTable

功能介绍

  1. 快速配置自动生成表格;

  2. 自动计算表格宽高;

  3. 表格列标题组合;

  4. 表格固定左序列、顶部序列、第一行、列标题、统计行;

  5. 自动统计,排序(自定义统计规则);

  6. 表格图文、序列号、列标题格式化;

  7. 表格各组成背景、文字、网格、padding等配置;

  8. 表格批注;

  9. 表格内容、列标题点击事件;

  10. 缩放模式和滚动模式;

  11. 注解模式;

  12. 内容多行显示;

  13. 分页模式;

  14. 首尾动态添加数据;

  15. 丰富的格式化;

  16. 支持二维数组展示(用于类似日程表,电影选票等);

  17. 导入excel(支持颜色,字体,背景,批注,对齐,图片等基本Excel属性);

  18. 表格合并单元(支持注解合并,支持自动合并);

  19. 支持其他刷新框架SmartRefreshLayout;

  20. 可配置表格最小宽度(小于该宽度自动适配);

  21. 支持直接List或数组字段转列;

  22. 支持Json数据直接转换成表格;

  23. 支持表格网格指定行列显示;

  24. 支持自动生成表单。

如何使用

我使用的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_如何使用的更多相关文章

  1. Android 内存缓存框架 LruCache 的实现原理,手写试试?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在之前的文章里,我们聊到了 LRU 缓存淘汰算法,并且分析 Java 标准库中支持 ...

  2. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

  3. [Android]Android端ORM框架——RapidORM(v2.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...

  4. [Android]依赖注入框架google的dagger

    分享一下Android依赖注入框架--Google升级版Dagger2框架 Google的Dagger2是对上一版squareup的Dagger改版,话不多说直接上项目代码. Dagger2源码 Da ...

  5. [Android]依赖注入框架squareup的dagger

    分享一下Android依赖注入框架--Dagger使用 Dagger源码 Dagger1-Demo 希望能给大家的开发带来帮助.

  6. Android动画学习(一)——Android动画系统框架简介

    2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其 ...

  7. Android开源测试框架学习

    近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...

  8. Android Http请求框架二:xUtils 框架网络请求

    一:对Http不了解的请看 Android Http请求框架一:Get 和 Post 请求 二.正文 1.xUtils 下载地址 github 下载地址  : https://github.com/w ...

  9. [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法

    一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...

  10. 60.Android通用流行框架大全

    转载:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的 ...

随机推荐

  1. 【LeetCode2180】[Go/C++/C#/Ruby/Swift/Kotlin/Rust/PHP/TS/Racket/Dart/Java/Elixir/Scala/Erlang] 统计各位数字之和为偶数的整数个数

    目录 题解地址 代码 golang c++ C# ruby swift kotlin rust php typescript racket dart java elixir scala erlang ...

  2. 细节讲解并实操下: 去中心化社交协议 ---- Nostr

    作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. GitHub : https://github.com/af913337456/ 出版的书籍: <1.0-区块链DApp开发实战&g ...

  3. linux使用汇总

    linux使用汇总 Linux的目录结构 没有逻辑磁盘分区(C盘.D盘...) 是一棵树形结构,根目录是/ 根目录下边有几个文件夹,需要我们了解: /etc:配置文件所在的文件夹.比如:安装JDK,配 ...

  4. new做了哪些事情,手写一个new

    1)创建一个空对象,将构造函数中的this指向这个空对象 2)将空对象的__proto__指向构造函数的prototype原型 3)执行构造函数里面的代码,为这个空对象添加属性和方法 4)返回一个新的 ...

  5. 六位一体Serverless化应用,帮你摆脱服务器的烦恼

    ​ 随着互联网技术的飞速发展,越来越多的应用横空出世,是以不可避免带来了大量的服务器需求.大部分的开发者都选择购买或者租用服务器,然而这样也带来了诸多的烦恼. 1.硬件成本高昂 购买服务器费用昂贵,除 ...

  6. 生产计划问题(动态规划)—R实现

    动态规划 动态规划(英语:Dynamic programming,简称 DP),是一种在数学.管理科学.计算机科学.经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方 ...

  7. SELinux入门学习总结

    前言 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统. SELinux 主要由美国国家 ...

  8. python之爬虫一

    python爬虫学习 1爬虫室什么 网络爬虫(Web Spider)又称"网络蜘蛛"或"网络机器人",它是一种按照一定规则从 Internet 中获取网页内容的 ...

  9. mysql迁移:mysqldump导出表结构及数据

    问题描述:有需要mysql某几张表的需求,某个数据库某几张表,导出先检查相应的数据库和表是否存在 数据泵用法:默认导出的是表结构以及表中的数据 mysqldump -uroot -p -S /data ...

  10. OctConv:八度卷积复现

    摘要:不同于传统的卷积,八度卷积主要针对图像的高频信号与低频信号. 本文分享自华为云社区<OctConv:八度卷积复现>,作者:李长安 . 论文解读 八度卷积于2019年在论文<Dr ...