Android動態(tài)表格的實現(xiàn)代碼(內(nèi)容、樣式可擴(kuò)縮)
1.實現(xiàn)動態(tài)表格效果如下:
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,設(shè)置表名、表格數(shù)據(jù)
private void getDatas() { String title = "表名"; String getDatas = "[{\"宿舍樓\":\"第一棟\",\"宿舍1001人數(shù)\":\"8\",\"宿舍1002人數(shù)\":\"2\",\"宿舍1003人數(shù)\":\"2\",\"宿舍1004人數(shù)\":\"1\",\"宿舍1005人數(shù)\":\"6\",\"宿舍1006人數(shù)\":\"6\"}," + "{\"宿舍樓\":\"第二棟\",\"宿舍1001人數(shù)\":\"2\",\"宿舍1002人數(shù)\":\"3\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第三棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第四棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第五棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第六棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第七棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第八棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第九棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十一棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十二棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十三棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十四棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十五棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十六棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十七棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十八棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第十九棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第二十棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第二十一棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第二十二棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第二十三棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第三十四棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}," + "{\"宿舍樓\":\"第三十五棟\",\"宿舍1001人數(shù)\":\"3\",\"宿舍1002人數(shù)\":\"1\",\"宿舍1003人數(shù)\":\"3\",\"宿舍1004人數(shù)\":\"2\",\"宿舍1005人數(shù)\":\"7\",\"宿舍1006人數(shù)\":\"8\"}]"; List<Object> json = JsonUtil.jsonToObjs(getDatas, Object.class); MapTableData tableData = MapTableData.create(title, json,null); table.setTableData(tableData); }
4.1 未完整的代碼MapTableData.java,開始創(chuàng)建新表格
/** * 創(chuàng)建Map表格數(shù)據(jù) * * @param tableName 表格名 * @param mapList Map數(shù)組 */ public static MapTableData create(String tableName, List<Object> mapList,String classity) { return create(tableName, mapList, null,classity); } /** * 創(chuàng)建Map表格數(shù)據(jù) * * @param tableName 表格名 * @param mapList Map數(shù)組 * @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()){ //根據(jù)classity 設(shè)置表頭 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)){//設(shè)施建設(shè)情況統(tǒng)計 // 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)){//設(shè)施運(yùn)行情況統(tǒng)計 // newColumns.add(columns.get(0)); // newColumns.add(new Column("項目數(shù)量", 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地址下載點擊鏈接:下載源代碼
到此這篇關(guān)于Android動態(tài)表格的實現(xiàn)代碼(內(nèi)容、樣式可擴(kuò)縮)的文章就介紹到這了,更多相關(guān)android動態(tài)表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android實現(xiàn)微信支付的統(tǒng)一下單
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)微信支付的統(tǒng)一下單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06Android編程實現(xiàn)簡單設(shè)置按鈕顏色的方法
這篇文章主要介紹了Android編程實現(xiàn)簡單設(shè)置按鈕顏色的方法,涉及Android控件布局與屬性設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Android如何實現(xiàn)藍(lán)牙配對連接功能
Android 并沒有開放配對連接耳機(jī)的接口,而且網(wǎng)上大部分資料都是講解如何連接藍(lán)牙4.0的,很少有資料詳細(xì)介紹藍(lán)牙2.0相關(guān)的。期間還是踩了不少坑才摸索出解決辦法。所以把我自己摸索總結(jié)出來的經(jīng)驗梳理記錄下,以便備份2021-05-05淺談 Android 7.0 多窗口分屏模式的實現(xiàn)
這篇文章主要介紹了淺談 Android 7.0 多窗口分屏模式的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03TextView顯示系統(tǒng)時間(時鐘功能帶秒針變化
用System.currentTimeMillis()可以獲取系統(tǒng)當(dāng)前的時間,我們可以開啟一個線程,然后通過handler發(fā)消息,來實時的更新TextView上顯示的系統(tǒng)時間,可以做一個時鐘的功能2013-11-11Android EditText 實現(xiàn)監(jiān)聽實例
本文主要介紹Android EditText 組件 實現(xiàn)監(jiān)聽事件,并附有代碼實例,在Android開發(fā)過程中如果能用到可以參考下2016-07-07