好用漂亮的Android 表格框架3

@SmartTable(name = “课程表”)
public class CollegeStudent {
@SmartColumn(id = 1,name =“姓名”)
private String name;

@SmartColumn(type = ColumnType.ArrayChild)
private List weeks;
}

星期

public class Week {
@SmartColumn(id=2,name =“星期”)
private String name;
@SmartColumn(type = ColumnType.ArrayChild)
private List

时间

public class DayTime {
@SmartColumn(id=3,name =“时间”)
private String time;
@SmartColumn(type = ColumnType.ArrayChild)
private List lessons;

后面都是依次类推,@SmartColumn 注解有个类型typeColumnType.ArrayChild 代表要深入到内部里面每个对象去获取注解和解析。

你会发现假设是List<String>或者int[]没办法继续深入查询,那设置 ColumnType.ArrayOwn.它也会解析每个对象,但是不会继续去查询对象本身是否有注解。

转列不只支持List还支持数组。

普通模式

Column studentNameColumn = new Column<>(“姓名”,“name”);
ArrayColumn weekNameColumn = new ArrayColumn<>(“星期”,“weeks.name”);
ArrayColumn timeNameColumn = new ArrayColumn<>(“时间”,“weeks.times.time”);
ArrayColumn lessonNameColumn = new ArrayColumn<>(“课程”,“weeks.times.lessons.name”);

ArrayColumn pointNameColumn = new ArrayColumn<>(“知识点”,“weeks.times.lessons.lessonPoints.name”);
ArrayColumn lessonFavColumn = new ArrayColumn<>(“是否喜欢”,“weeks.times.lessons.isFav”);
TableData tableData = new TableData<>(“课程表”,students,studentNameColumn,
weekNameColumn,timeNameColumn,lessonNameColumn,pointNameColumn,lessonFavColumn);
table.setTableData(tableData);

普通模式也很简单,只需用ArrayColumn代替Column就可以。不需要任何注解。

由于时间限制,数组List转列功能暂不支持动态加载,自动合并 功能。一个类最多可以展示一个List(单层级).后续有时间补上。

Json数据变成表格

很多时候我们需要展示的数据列不固定,需要根据实时数据来展示,这个时候我们肯定会想到用Map key-value去接收转换成列。只需要按List传入也可解析。这里以我们常用的Json举例:

从网上随便找了json数据。

String json=“{“name”:“BeJson”,“url”:“http://www.bejson.com”,“page”:88,“isNonProfit”:true,“links”:[{“name”:“Google”,“url”:“http://www.google.com”},{“name”:“Baidu”,“url”:“http://www.baidu.com”},{“name”:“SoSo”,“url”:“http://www.SoSo.com”},{“name”:“Google”,“url”:“http://www.google.com”},{“name”:“Baidu”,“url”:“http://www.baidu.com”},{“name”:“SoSo”,“url”:“http://www.SoSo.com”},{“name”:“Google”,“url”:“http://www.google.com”},{“name”:“Baidu”,“url”:“http://www.baidu.com”},{“name”:“SoSo”,“url”:“http://www.SoSo.com”},{“name”:“Google”,“url”:“http://www.google.com”},{“name”:“Baidu”,“url”:“http://www.baidu.com”},{“name”:“SoSo”,“url”:“http://www.SoSo.com”}]}”;

和之前一样,设置表格数据:

MapTableData tableData = MapTableData.create(“表格名”,JsonHelper.jsonToMapList(json));
table.setTableData(tableData);

然后调用MapTableData静态方法create创建MapTableData表格数据类即可,JsonHelper是辅助Json转成Map集合的。下面生成的表格:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

提供了格式化数据,以便null数据可以显示指定文字,提供拦截器,判断是否需要拦截该列不显示。Json解析也支持多层查询List.

自动合并单元格功能

这个看图说话

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

未开启自动合并效果图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

开启自动合并效果图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注解模式

最后我还整理了很多Android中高级的PDF技术文档。以及一些大厂面试真题解析文档。

image

Android高级架构师之路很漫长,一起共勉吧!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值