Android动态表格的实现代码(内容、样式可扩缩)

1.实现动态表格效果如下:

2.项目如下:

**3.activity_smart_table.xml,表格布局代码如下:**

 <com.bin.david.form.core.SmartTable
        android:id="@+id/table"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/gray_lightest"/>

4.SmartTableActivity.java,设置表名、表格数据

private void getDatas() {
         String title = "表名";
         String getDatas = "[{\"宿舍楼\":\"第一栋\",\"宿舍1001人数\":\"8\",\"宿舍1002人数\":\"2\",\"宿舍1003人数\":\"2\",\"宿舍1004人数\":\"1\",\"宿舍1005人数\":\"6\",\"宿舍1006人数\":\"6\"}," +
                 "{\"宿舍楼\":\"第二栋\",\"宿舍1001人数\":\"2\",\"宿舍1002人数\":\"3\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第三栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第四栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第五栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第六栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第七栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第八栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第九栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十一栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十二栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十三栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十四栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十五栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十六栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十七栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十八栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第十九栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第二十栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第二十一栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第二十二栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第二十三栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第三十四栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}," +
                 "{\"宿舍楼\":\"第三十五栋\",\"宿舍1001人数\":\"3\",\"宿舍1002人数\":\"1\",\"宿舍1003人数\":\"3\",\"宿舍1004人数\":\"2\",\"宿舍1005人数\":\"7\",\"宿舍1006人数\":\"8\"}]";
        List<Object> json = JsonUtil.jsonToObjs(getDatas, Object.class);
        MapTableData tableData = MapTableData.create(title, json,null);
        table.setTableData(tableData);
    }

4.1 未完整的代码MapTableData.java,开始创建新表格

/**
     * 创建Map表格数据
     *
     * @param tableName 表格名
     * @param mapList   Map数组
     */
    public static MapTableData create(String tableName, List<Object> mapList,String classity) {
        return create(tableName, mapList, null,classity);
    }

    /**
     * 创建Map表格数据
     *
     * @param tableName 表格名
     * @param mapList   Map数组
     * @param keyFormat map中key格式化
     */
    public static MapTableData create(String tableName, List<Object> mapList, IFormat<String> keyFormat,String classity) {
        if (mapList != null) {
            List<Column> columns = new ArrayList<>();
            getMapColumn(columns, Column.INVAL_VALUE, Column.INVAL_VALUE, mapList, keyFormat);

            if(classity!=null&&!classity.isEmpty()){
                //根据classity 设置表头
                columns = getNewColumn(columns,classity);
            }

            return new MapTableData(tableName, mapList, columns);
        }
        return null;
    }

    private static List<Column> getNewColumn(List<Column> columns, String classity) {

        try{

            if(columns.size() == 0){
                return columns;
            }

            //多表头 重新组装表头
//            List<Column> newColumns = new ArrayList<>();
//
//            if("Get_***".equals(classity)){
//                Column column0 = columns.get(0);column0.setColumnName("单位");
//                newColumns.add(column0);
//
//                Column column1 = columns.get(1);column1.setColumnName("***");
//                Column column2 = columns.get(2);column2.setColumnName("***");
//                Column column3 = columns.get(3);column3.setColumnName("***");
//                Column column4 = columns.get(4);column4.setColumnName("***");
//                Column column5 = columns.get(5);column5.setColumnName("***");
//                newColumns.add(new Column("***", column1, column2, column3, column4, column5));
//
//                Column column6 = columns.get(6);column6.setColumnName("***");
//                Column column7 = columns.get(7);column7.setColumnName("***");
//                Column column8 = columns.get(8);column8.setColumnName("***");
//                Column column9 = columns.get(9);column9.setColumnName("***");
//                Column column10 = columns.get(10);column10.setColumnName("***");
//
//                newColumns.add(new Column("***", column6, column7, column8, column9, column10));
//
//                return newColumns;
//            }else if("Get***".equals(classity)){//设施建设情况统计
//                newColumns.add(columns.get(0));
//
//                newColumns.add(new Column("***", columns.get(1), columns.get(2), columns.get(3), columns.get(4)));
//
//                Column column5 = columns.get(5);column5.setColumnName("***");
//                newColumns.add(column5);
//
//                Column column6 = columns.get(6);column6.setColumnName("***");
//                newColumns.add(column6);
//
//                newColumns.add(new Column("***", columns.get(7), columns.get(8), columns.get(9)));
//
//                newColumns.add(new Column("***", columns.get(10), columns.get(11), columns.get(12), columns.get(13)));
//
//                Column column14 = columns.get(14);column14.setColumnName("***");
//                Column column15 = columns.get(15);column15.setColumnName("***");
//                Column column16 = columns.get(16);column16.setColumnName("***");
//                Column column17 = columns.get(17);column17.setColumnName("地方");
//                Column column18 = columns.get(18);column18.setColumnName("***");
//                Column column19 = columns.get(19);column19.setColumnName("其他");
//                newColumns.add(new Column("***", column14, column15, column16, column17, column18,column19));
//
//                newColumns.add(new Column("***", columns.get(20), columns.get(21), columns.get(22)));
//
//
//                Column column23 = columns.get(23);column23.setColumnName("***");
//                newColumns.add(column23);
//
//                Column column24 = columns.get(24);column24.setColumnName("***");
//                newColumns.add(column24);
//
//                return newColumns;
//            }else if("Get***".equals(classity)){//设施运行情况统计
//                newColumns.add(columns.get(0));
//                newColumns.add(new Column("项目数量", columns.get(1), columns.get(2), columns.get(3), columns.get(4)));
//
//                newColumns.add(new Column("项目属性", columns.get(5), columns.get(6), columns.get(7), columns.get(8)));
//
//                Column column9 = columns.get(9);column9.setColumnName("合计");
//                Column column10 = columns.get(10);column10.setColumnName("***");
//                Column column11 = columns.get(11);column11.setColumnName("***");
//                Column column12 = columns.get(12);column12.setColumnName("地方");
//                Column column13 = columns.get(13);column13.setColumnName("***");
//                Column column14 = columns.get(14);column14.setColumnName("其他");
//                newColumns.add(new Column("***", column9, column10, column11, column12, column13, column14));
//
//                Column column15 = columns.get(15);column15.setColumnName("***");
//                newColumns.add(column15);
//
//
//                Column column16 = columns.get(16);column16.setColumnName("合计");
//                newColumns.add(new Column("***", column16, columns.get(17), columns.get(18)));
//
//                newColumns.add(new Column("***", columns.get(19), columns.get(20), columns.get(21)));
//
//                return newColumns;
//            }

            return columns;
        }catch (Exception e){
            e.printStackTrace();
            return columns;
        }
    }
......
    private MapTableData(String tableName, List t, List<Column> columns) {
        super(tableName, t, columns);

        //固定第一列//
        if(columns.size() > 0){
            columns.get(0).setFixed(true);
        }
        /
    }

5.源代码zip地址下载点击链接:下载源代码

到此这篇关于Android动态表格的实现代码(内容、样式可扩缩)的文章就介绍到这了,更多相关android动态表格内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android开发之TableLayout表格布局

    表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象.TableRow可以添加子控件,每添加一个为一列. TableLayout属性: android:collapseColumns:将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开. android:stretchColumns:设置指定的列为可伸展的列,以填满剩下的多余空白空间,若有多列需要设置为可伸展,请用逗号将需要伸展的列序号隔开. android

  • Android开发实现的导出数据库到Excel表格功能【附源码下载】

    本文实例讲述了Android开发实现的导出数据库到Excel表格功能.分享给大家供大家参考,具体如下: 之前一直在电脑上用Excel表格记录家庭帐单,不久前重装系统不小心干掉了,伤心了好久,那可是我记了五年的帐单呀!这段时间用的是随手记,好用但是不太符合我的习惯,所以我自己写了一个小小的帐单记录APP,App小到只有一个Activity.当然更多的需求我正在研发中,呵呵!现在已经完成了把每天记录的数据保存到Sqilte数据库中,然后可以导出到excel表格.代码也是借助网上的一些资料写成的,代码

  • Android开发菜单布局之表格布局示例

    本文实例讲述了Android开发菜单布局之表格布局.分享给大家供大家参考,具体如下: 多用于静态菜单页面 xml代码 代码内带详细解释 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.andro

  • Android动态表格的实现代码(内容、样式可扩缩)

    1.实现动态表格效果如下: 2.项目如下: **3.activity_smart_table.xml,表格布局代码如下:** <com.bin.david.form.core.SmartTable android:id="@+id/table" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"

  • Element实现动态表格的示例代码

    目录 [代码背景] [代码实现] #1# -> 代码复用的基础是你需要一个可复用的组件 #2# -> 在展示页面使用动态表格组件 #3# -> 如何给动态表格根据需求动态添加序号列/索引列 [代码背景] 有这样一个业务需求场景,有大概十几张表归属于某个类别,用户希望在同一个页面,通过选择不同的查询指标展示不同的表格,这些表的表头样式类似但是又不完全相同,怎么做呢? 到目前为止所有基于Element UI的表格样式都是直接在页面写死的,像官方这样: <el-table :data=&

  • Android 动态菜单实现实例代码

    Android 动态菜单 先上效果图 比较简单,主要就是属性动画的使用和坐标角度的小细节. 实现 实现效果: 图标按照路径一路缩放渐变过来即可. 核心代码 /** * Item开启动画 * * @param btnItem * @param index * @param total * @param radius */ private void btnItemStartAnimator(View btnItem, int index, int total, int radius) { if (b

  • Android动态布局使用详解

    本文为大家分享了Android动态布局的实现代码,供大家参考,具体内容如下 内容如下:介绍多种实现动态布局的方法,以及如何用代码来调整View位置 这里只介绍三种布局情况(注意不是方式) 1.无xml : 一个父类布局包含一个子父类布局,子父类布局中包含ImageView 2.无xml : 只有一个父类布局包含一个ImageView 3.有xlm布局: 通过布局ID 来进行动态布局添加 总结了下其实步骤如下: 无xml布局: 1.setContentView()之前new一个需要的布局layou

  • JavaScript实现简单动态表格

    本文实例为大家分享了JavaScript实现简单动态表格的具体代码,供大家参考,具体内容如下 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>动态表格</title> <style> table{ border: 1px solid; margin: auto; width: 500p

  • 掌握Android Handler消息机制核心代码

    目录 一.handler基本认识 1.基本组成 2.基本使用方法 3.工作流程 二.发送消息 三.消息进入消息队列 1.入队前的准备工作 2.将消息加入队列 四.从消息队列里取出消息 1.准备工作 2.loop中的操作 2.1 MessageQueue的next方法 五.消息的处理 六.其他关键点 1. Loop的创建 2.Handler的创建 3.Message的创建.回收和复用机制 4. IdleHandler 5.Handler在Framework层的应用 阅读前需要对handler有一些

  • Android 动态改变SeekBar进度条颜色与滑块颜色的实例代码

    遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下progressDrawable与thumb即可,但是这样设置好就是确定的了,要动态更改需要在代码里实现. 用shape进度条与滑块 SeekBar设置 代码里动态设置setProgressDrawable与setThumb 画图形,大家都比较熟悉,background是背景图,secondaryProgress第二进度条,progress进度条: <layer-list

  • Android 多种简单的弹出框样式设置代码

    简介 这是一个基于AlertDialog和Dialog这两个类封装的多种弹出框样式,其中提供各种简单样式的弹出框使用说明.同时也可自定义弹出框. 项目地址:http://www.github.com/jjdxmashl/jjdxm_dialogui 特性 1.使用链式开发代码简洁明了 2.所有的弹出框样式都在DialogUIUtils这个类中完成,方便查阅方法 3.可以自定义弹出框字体样式 4.简单的类似加载框的样式可以支持两种主题更改默认白色和灰色 截图 demo下载 demo apk下载 D

  • Android 动态添加Fragment的实例代码

    1.fragment1布局及代码 布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width=&quo

  • Android系统音量条实例代码

    最近在定制Android系统音量条,发现代码还是蛮多的,下面总结一下. 代码是基于5.1.1版本的. 系统音量条的代码是在/frameworks/base/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java 布局文件是在/frameworks/base/packages/SystemUI/res/layout下. 先看看原生的音量条样式: 在代码中可以发现volume_dialog.xml这个文件,这个文件就是承载

随机推荐