如何用安卓编写类Excel的表格并填充数据

简介: 前段时间应运营需求要求做一个小Demo用来显示数据,在这个过程中,我学会了用代码来做出类似于Excel表格的显示效果,下面就和大家一起分享。 要做成表格形式的布局,很容易让我们想到表格布局,所以先要新建一个layout,在这个layout中我们放入两个TableLayout,其中一个是用来显示表格中的标题,而另一个TableLayout用来显示数据,考虑到可能显示的数据较多,所以外面包上一层ScrollView。

前段时间应运营需求要求做一个小Demo用来显示数据,在这个过程中,我学会了用代码来做出类似于Excel表格的显示效果,下面就和大家一起分享。


要做成表格形式的布局,很容易让我们想到表格布局,所以先要新建一个layout,在这个layout中我们放入两个TableLayout,其中一个是用来显示表格中的标题,而另一个TableLayout用来显示数据,考虑到可能显示的数据较多,所以外面包上一层ScrollView。主要代码如下:

<TableLayout
        android:id="@+id/tablelayout_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffdedcd2"
        android:stretchColumns="*" />

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/tablelayout_title"
        android:orientation="vertical">

        <TableLayout
            android:id="@+id/tablelayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#ffdedcd2"
            android:stretchColumns="*" />
    </ScrollView>
写好布局文件后,我们开始要填充数据了,也就是我代码中写到的addWidget()方法。数据的话我是造的json类型的假数据,并且新建对象类进行解析,这个就不多说了。先看主要的填充数据的代码。首先是表格的标题,也就是我们通常看到的表格最上方那一栏。主要代码如下:

for (int j = 0; j < 1; j++) {
    TableRow localTableRow1 = new TableRow(this);
    localTableRow1.setBackgroundColor(getResources().getColor(R.color.realtime_table_bg));
    for (int k = 0; k < this.column; k++) {
        TextView localTextView1 = new TextView(this);
        localTextView1.setWidth(this.viewWidth);
        localTextView1.setBackgroundResource(R.drawable.table_shape_title);
        localTextView1.setGravity(17);
        localTextView1.setTextSize(2, 16);
        localTextView1.setTextColor(getResources().getColor(R.color.white));
        localTextView1.getPaint().setFakeBoldText(true);
        localTextView1.setSingleLine();
        switch (k) {
            default:
                break;
            case 0:
                localTextView1.setText("A");
                localTableRow1.addView(localTextView1);
                break;
            case 1:
                localTextView1.setText("B");
                localTableRow1.addView(localTextView1);
                break;
            case 2:
                localTextView1.setText("C");
                localTableRow1.addView(localTextView1);
                break;
            case 3:
                localTextView1.setText("D");
                localTableRow1.addView(localTextView1);
                break;
            case 4:
                localTextView1.setText("E");
                localTableRow1.addView(localTextView1);
                break;
            case 5:
                localTextView1.setText("F");
                localTableRow1.addView(localTextView1);
                break;
            case 6:
                localTextView1.setText("G");
                localTableRow1.addView(localTextView1);
                break;
            case 7:
                localTextView1.setText("H");
                localTableRow1.addView(localTextView1);
        }
    }
    this.tb_title.addView(localTableRow1, new TableLayout.LayoutParams(-1, -2));
}
我们用两个for循环来实现这个数据的填充,最外层for循环之所以判断“j<1”,是因为我们这里只要一行就够了。我们在这里新建一个TabRow,然后再在这一行中添加列。里层的这个for循环中的column就是我们的列数,这里我们用A~H表达我们的列标题名称,通过一个for循环每次新建一个新的TextView,然后判断是第几列,根据位置依次加入我们的列名称。最后在tb_title,也就是我们标题对应的这个TableLayout中添加这些view。

同样的,下面的表格布局也是同样的用两个for循环来实现,只是最外层循环我们是要根据服务器传过来的列表大小来决定了。

因为我们手机通常是书评,可能导致显示不全或不便观看的问题,所以在setContentView()方法之前我加了一个判断,保证一进入这个页面就会显示为横屏:

if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
不过运行之后报错,后来发现是因为这个activity没有设置屏幕显示方向导致的,最后在清单文件里面加上下面这句代码就可以了。
android:screenOrientation="sensorLandscape"
表格布局的实现和运用就介绍到这里了,demo下载地址:http://download.csdn.net/detail/shan286/9475782

目录
相关文章
|
24天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
103 5
|
2月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
19天前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
38 2
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
|
2月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
26 1
|
24天前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
39 0
|
2月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
22 2
|
2月前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
142 0