最近项目里要用到表格,闲着没事,研究了一下,主要的开发框架是:TableLayout+GridView+TableRow+BaseAdapter。看一下最终效果:

为什么要使用BaseAdapter?

因为当向表格中填充数据时,如果在主线程中new出row填充数据,会造成线程等待,界面会加载很慢,甚至造成异常,使用适配器,像listView一样,可以有效地对表格row进行复用,数据加载更快。

为什么要用GridView?

有人会问既然用了TableLayout了,动态加载数据时用一个Linearlayout添加表格数据就好了呀,可是Linearlayout没有setAdapter方法,GridView自带setAdapter方法,而且GridView本身就是网格视图,功能更强大。

TableLayout不带分割线Api,怎么实现的?

这里有点技巧,首先是边框:设置TableLayout为黑色背景,将TableRow的Layout_magin设置为0.1dp,tableRow中的每一个子TextView之间划线,加一个0.1dp宽度的View,即可。

整体的代码如下:

界面的布局文件:(红字为边框及分割线)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFFFF"android:orientation="vertical" ><TableLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="20dp"<span style="color:#ff0000;">android:background="#000000"</span> ><TableRowandroid:layout_width="match_parent"android:layout_height="wrap_content"<span style="color:#ff0000;">android:layout_margin="0.1dp"android:background="#FFFFFF"</span> ><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1.5"android:padding="5dp"android:text="姓名"android:textColor="#000000"android:textSize="18sp" /><span style="color:#ff0000;"><Viewandroid:layout_width="0.1dp"android:layout_height="match_parent"android:background="#000000" /></span><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="2"android:padding="5dp"android:text="选择专业"android:textColor="#000000"android:textSize="18sp" /><span style="color:#ff0000;"><Viewandroid:layout_width="0.1dp"android:layout_height="match_parent"android:background="#000000" /></span><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"android:text="考试成绩"android:textColor="#000000"android:textSize="18sp" /><span style="color:#ff0000;"><Viewandroid:layout_width="0.1dp"android:layout_height="match_parent"android:background="#000000" /></span><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"android:text="排名"android:textColor="#000000"android:textSize="18sp" /></TableRow><GridViewandroid:id="@+id/table_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ></GridView></TableLayout></LinearLayout>

每一个TableRow的xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TableRowandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="0.1dp"android:layout_marginLeft="0.1dp"android:layout_marginRight="0.1dp"android:background="#FFFFFF" ><TextViewandroid:id="@+id/name"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1.5"android:padding="5dp"android:textColor="#000000"android:textSize="14sp" /><Viewandroid:layout_width="0.1dp"android:layout_height="match_parent"android:background="#000000" /><TextViewandroid:id="@+id/major"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="2"android:padding="5dp"android:textColor="#000000"android:textSize="14sp" /><Viewandroid:layout_width="0.1dp"android:layout_height="match_parent"android:background="#000000" /><TextViewandroid:id="@+id/score"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"android:textColor="#000000"android:textSize="14sp" /><Viewandroid:layout_width="0.1dp"android:layout_height="match_parent"android:background="#000000" /><TextViewandroid:id="@+id/rank"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"android:textColor="#000000"android:textSize="14sp" /></TableRow></LinearLayout>

Adapter:

public class TableRowAdapter extends BaseAdapter {private List<TableData> datas;private Context context;public TableRowAdapter(Context ctx,List<TableData> datas) {context = ctx;this.datas = datas;}@Overridepublic int getCount() {return datas.size();}@Overridepublic Object getItem(int position) {return datas.get(position);}@Overridepublic long getItemId(int position) {return position;}@SuppressLint("InflateParams")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TableData data = datas.get(position);ViewHolder holder;if(convertView == null){holder = new ViewHolder();convertView = LayoutInflater.from(context).inflate(R.layout.tableview_layout, null);convertView.setTag(holder);}else{holder = (ViewHolder) convertView.getTag();}holder.name = (TextView)convertView.findViewById(R.id.name);holder.score  =(TextView)convertView.findViewById(R.id.score);holder.major = (TextView)convertView.findViewById(R.id.major);holder.rank = (TextView)convertView.findViewById(R.id.rank);holder.name.setText(data.name);holder.score.setText(data.score);holder.major.setText(data.major);holder.rank.setText(data.rank);return convertView;}class ViewHolder{TextView name;TextView score;TextView major;TextView rank;}
}

主界面代码:

public class TableLayoutActivity extends Activity {private GridView tableLayout;private TableRowAdapter adapter;private List<TableData> datas;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.table_layout);tableLayout = (GridView)this.findViewById(R.id.table_layout);datas = new ArrayList<TableData>();datas.add(new TableData("张三","大学物理","95","1"));datas.add(new TableData("李四","化学","92","2"));datas.add(new TableData("王五","计算机","87","3"));datas.add(new TableData("赵六","生物","82","4"));for(int i = 0;i<30;i++){datas.add(new TableData("haha"+i+5,"English",70-i+"",i+5+""));}adapter = new TableRowAdapter(this, datas);tableLayout.setAdapter(adapter);}}

基本的excel表格开发相关推荐

  1. 数据库导入Excel表格

    数据库导入Excel表格 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Vi ...

  2. 从浏览器里面的数据导出数据到Excel表格

    从浏览器里面的数据导出数据到Excel表格 开发工具与关键技术:Visual Studio 2015 作者:李仁海 撰写时间:2019.5.5 一. 导出数据到Excel表格 1. public.加上 ...

  3. 安卓mysql导出excel_Android开发实现的导出数据库到Excel表格功能【附源码下载】...

    本文实例讲述了Android开发实现的导出数据库到Excel表格功能.分享给大家供大家参考,具体如下: 之前一直在电脑上用Excel表格记录家庭帐单,不久前重装系统不小心干掉了,伤心了好久,那可是我记 ...

  4. 【游戏开发】Excel表格批量转换成CSV的小工具

    一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...

  5. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

  6. 微信小程序云开发之将云数据库信息导出到Excel表格并复制下载链接

    在必要的情况下,我们需要将数据库的信息导入到Excel表格中.这时候,通过云函数很容易可以实现该功能. 先看一下效果: 我们将分为以下几个步骤: 安装导出Excel表格的模块 编写云函数代码 导出表格 ...

  7. Unity开发Excel表格读取器

    我们在实际游戏开发中可能会遇到需要对于读取Excel表格的需求,可以自己开发一套使用二进制读写的插件.整体思路分为两步: 第一步:读取Excel文件 1.将Excel表中的信息生成为结构类,为此我们需 ...

  8. 《崔庆才Python3网络爬虫开发实战教程》学习笔记(3):抓取猫眼电影榜单TOP100电影,并存入Excel表格

    本篇博文是自己在学习崔庆才的<Python3网络爬虫开发实战教程>的学习笔记系列,如果你也要这套视频教程的话,关注我公众号[小众技术],关注后回复[PYTHON],无套路免费送你一个学习大 ...

  9. 基于云开发模式的评分小程序总结!二维码、导出excel表格等实用干货!

    基于云开发的打分小程序开发总结 1.TAKE打分小程序 1.1.项目简介 1.1.1.开发背景 1.1.2.项目介绍 1.2.项目效果图 1.2.1.主页 1.2.2.评分流程页 1.2.3.项目详情 ...

最新文章

  1. xp 安装mysql数据库_Windows XP系统中安装MySQL5.5.28数据库图文教程
  2. Java怎么样?学完后前途怎么样?
  3. hana::detail::variadic::at用法的测试程序
  4. 简单快速安装Apache+PHP+MySql服务环境(三)—— 下载安装phpmyadmin
  5. ISA Best Practices Analyzer Tool
  6. 别人家的年终奖!这公司逆势上调年终奖 员工最多可拿到20薪
  7. 简单易用线上引流测试工具:GoReplay
  8. RDS for MySQL 物理备份文件恢复到本地数据库(亲测)
  9. Uploading File using Ajax and receiving binary data in Asp.net (C#)[转]
  10. Javassist进行方法插桩
  11. 草图大师SketchUp2016下载和安装教程
  12. 直播预告|年营业额百亿的企业都在如何做数字化转型
  13. 超好看的3D烟花代码
  14. 使用周期一致的对抗网络进行不成对的图像到图像转换
  15. java 半小时_java获取当前时间加半小时之后的时间
  16. 计算机毕业设计springboot+vue基本微信小程序的校园二手商城的设计与实现
  17. 清除flashback日志
  18. wi-fi和路由器怎么连接_解决Wi-Fi问题的最简单方法:严重移动路由器
  19. 小程序轮播图组件跳转到自定义页面
  20. efk-elastalert-alerta集中日志自动告警

热门文章

  1. 【Python基础】实验——Lab 1 Python编程基础
  2. 时间处理相关类(Calendar,Instant,LocalDate,LocalTime,LocalDateTime)
  3. 图纸文档管理系统的基础功能有哪些?
  4. 积分兑换商城系统价格
  5. Struts2+Hibernate4开发学生信息管理功能--(二)Struts2和Hibernate整合
  6. NVIVOPASS视频教程大放送,解决数据难题!
  7. Pixel2Pixel:卡通照片真人化
  8. 童话 谢幕了。梦也该醒了:伤感日志
  9. 利用C语言,编写一程序:从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出
  10. 大学生活这样过,等着 Offer 飞来找