AppCan开发动态创建手机端table并存放数据

        最近手机端App开发接到一个任务,就是需要通过一个接口将接收到的数据与另外一张表字段拼接好的新字段进行匹配,并动态创建table将数据存放进去。

首先理清一下业务:1.需要将数据库中建好的参数表中的两个字段拼接为可以接收数据格式的字段。2数据库表查询,获取所有数据,转换为合法字段。3调用动态创建表格的 方法,创建表格并存放数据。

业务并不是很复杂,前两步最容易实现。因为这里的数据是会按照机组序号(相当于一个数据分组的标识)进行分组的,比方说若是有三个组的序号(1,2,3),那么就需要创建三个表格。开始自己的写法不够灵活,只是按照现有的数据,将创建表格的代码写死,比方说有两个组,我的代码就硬生生的创建了两个表格,而且代码冗余。显然这种做法被我们项目经理给否了。

真正的实现效果是需要按照人家后台录入的数据而动态创建表格的。以下看一下具体实现思路:

1.首先是数据库获取参数表字段并拼接合法新字段

for(int i=0;i<alAllData.size();i++)
{
HashMap dataHashNew=(HashMap)alAllData.get(i);
try{
//瞬时
ss_tagid=(String)dataHashNew.get("ss_tagid");
ss_taggroup=(String)dataHashNew.get("ss_taggroup");
//调方法开始拼接合法字段获取值
yxvalue1=PjNewString(ss_tagid, ss_taggroup);
//当日
dr_tagid=(String)dataHashNew.get("dr_tagid");
dr_taggroup=(String)dataHashNew.get("dr_taggroup");
yxvalue2=PjNewString(dr_tagid, dr_taggroup);
(这里只是调用了一个拼接字符串的方法)

.............

拼接之后存入集合

dataHashNew.put("zbname", zbname);
dataHashNew.put("yxvalue1", yxvalue1);
dataHashNew.put("yxvalue2", yxvalue2);

.............

之前的写法是根据存放数据的集合的大小来创建表格行,但是前面也说到了这种创建表格是达不到动态按需创建表格个数的,所以采用以下方式:

//按照组存放数据
HashMap  zjmcDatas=new HashMap();
     

先new一个map集合,然后

if(zjmcDatas.containsKey(jzfz)){
ArrayList al2=(ArrayList)zjmcDatas.get(jzfz);
al2.add(dataHashNew);
}else{
ArrayList al1=new ArrayList();
zjmcDatas.put(jzfz, al1);
al1.add(dataHashNew);
}
(上面的jzfz理解为机组序号)

这里做一下解释,这种方式是创建了一个map集合,key值存放的是机组序号,value存放的是所属机组序号的数据,并且是一个ArrayList集合,这样就将所有数据按照序号分开,并且可以做到按照键值的个数创建table,存放相应的数据。继续创建一个集合如下:


ArrayList alGroup=new ArrayList();
//存放组号的集合

//存放机组序号

if(!alGroup.contains(jzfz))
{
alGroup.add(jzfz);
}

//动态调用封装好的方法创建table方法:

for(int i=0;i<alGroup.size();i++)
{
String groupName=(String)alGroup.get(i);
ArrayList alDataEach=(ArrayList)zjmcDatas.get(groupName);
String htmlEach=htmlTable( alDataEach, groupName );
htmldata.append(htmlEach);
}
(htmlTable就是创建表格的方法)

关于动态创建表格这里不多做解释,简单阐述,就是通过一个StringBuffer调用append()方法拼接一个长的符合html格式的字符串,最后返回一个string。

至此功能基本实现,剩下的一些异常处理,特殊数据的处理通过捕获异常和优化程序来解决。

这里主要是为了分享这种实现思路,巧妙的运用hashMap做分组存放数据,从而实现动态创建表格的业务。小白经验分享,大神勿喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值