表格的动态添加

这里写图片描述

开发中有时候要用到表格的形式,而且是不规则的表格如上图,根据开发中拉取到的数据来创建表格,该表格原理是TableLayout 添加 TableRow和在TableRow里添加TableLayout 互相添加来实现的,不过有个问题就是当数据量比较大的时候会加载比较慢,我代码里是让表格显示出来后再让加载的dialog消失的,但是在手机上显示的情况确实,dialog消失后再过5到6秒表格才显示出来下面直接上代码

                    Gson gson = new Gson();
                    fenJieBean = gson.fromJson(result, FenJieBean.class);//result为请求到的数据,fenJieBean为存储数据的对象
                    String rileTitle=fenJieBean.fileTitle;
                    title.setText(rileTitle);
                //显示表格信息
                    displayRegeditedInfo();
                    mDialog.dismiss();

下面是表格设置方法

    private void displayRegeditedInfo() {
            // TODO Auto-generated method stub
            //(TableRow)子控件的宽高1
            layoutParam1= new TableRow.LayoutParams(0,LayoutParams.MATCH_PARENT,1.0f) ;//权重设置表格宽度
            //(TableRow)的子控件的宽高2
            layoutParam2= new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT,2.0f);
            //(TableRow)的子控件的宽高3
            layoutParam3= new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT,3.0f);
            //(TableRow)的子控件的宽高4
            layoutParam4= new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT,10.0f);
            //(TableRow)的子控件的宽高5
            layoutParam5= new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT,9.0f);
            //先添加表格标题头行,因为表头是固定的,所以直接写死
            TableRow tRow = new TableRow(mContext);
            tRow.setOrientation(TableRow.HORIZONTAL);
            TextView b1 = textMethod1("序号");
            tRow.addView(b1);
            TextView b2 = textMethod1("目标任务名称");
            tRow.addView(b2);
            TextView b3 = textMethod3("内容要求");
            tRow.addView(b3);
            TextView b4 = textMethod2("推进计划");
            tRow.addView(b4);
            TextView b5 = textMethod1("完成时限");
            tRow.addView(b5);
            TextView b6 = textMethod1("责任处室");
            tRow.addView(b6);
            TextView b7 = textMethod1("责任人");
            tRow.addView(b7);
            TextView b11 = textMethod1("备注");
            tRow.addView(b11);
            tableLayout.addView(tRow);//tableLayout为xml布局里的TableLayout对象,这行代码代表把表格第一行标题行添加上了
            for(int i=0;i<fenJieBean.list.size();i++){
                FenJieContent fenJieContent = fenJieBean.list.get(i);//得到行的对象
                //新建一行显示每个成员的具体信息
                 TableRow personRow = new TableRow(mContext);//personRow表示一行的对象
                 personRow.setOrientation(TableRow.HORIZONTAL);
                 String xuhao=fenJieContent.XUHAO;
                 TextView t = textMethod1( xuhao);
                 List<RenWuContent> renwuList=fenJieContent.renwuList;
                 TableLayout tableLayout1 = new TableLayout(mContext);
                  tableLayout1.setLayoutParams(layoutParam4);
                  for(int k=0;k<renwuList.size();k++){
                    //建行对象
                         TableRow personRow1 = new TableRow(mContext);//personRow表示一行的对象
                         personRow1.setOrientation(TableRow.HORIZONTAL);
                         RenWuContent renWuContent = renwuList.get(k);
                         String renwu=renWuContent.RENWU;
                         TextView t1 = textMethod1( renwu);
                         TableLayout tableLayout2 = new TableLayout(mContext);
                         tableLayout2.setLayoutParams(layoutParam5);
                         for(int w=0;w<renWuContent.jdList.size();w++){
                             JdContent jdContent = renWuContent.jdList.get(w);//建行对象
                             TableRow personRow2 = new TableRow(mContext);//personRow表示一行的对象
                             personRow2.setOrientation(TableRow.HORIZONTAL);
                             String yaoqiu=jdContent.YAOQIU;
                             TextView t2 = textMethod3(yaoqiu);
                             personRow2.addView(t2);
                             if(jdContent.JIHUA !=null&&(!"".equals(jdContent.JIHUA))){
                                 String jihua=jdContent.JIHUA;
                                                                                                                                                 TextView t3 = textMethod2(jihua);
                                 personRow2.addView(t3);
                             }else{
                                 personRow2.addView(textMethod2(""));
                             }

                             if(jdContent.SHIXIAN !=null&&(!"".equals(jdContent.SHIXIAN))){
                                 String shixian=jdContent.SHIXIAN;
                                 TextView t4 = textMethod1(shixian);
                                 personRow2.addView(t4);
                             }else{
                                 personRow2.addView(textMethod1(""));
                             }

                             if(jdContent.CHUSHI !=null&&(!"".equals(jdContent.CHUSHI))){
                                 String chushi=jdContent.CHUSHI;
                                 TextView t5 = textMethod1(chushi);
                                 personRow2.addView(t5);
                             }else{
                                 personRow2.addView(textMethod1(""));
                             }

                             if(jdContent.ZERENREN !=null&&(!"".equals(jdContent.ZERENREN))){
                                 String zerenren=jdContent.ZERENREN;
                                 TextView t6 = textMethod1(zerenren);
                                 personRow2.addView(t6);
                             }else{
                                 personRow2.addView(textMethod1(""));
                             }

                             if(jdContent.REMARK !=null&&(!"".equals(jdContent.REMARK))){
                                 String remark=jdContent.REMARK;
                                 TextView t7 = textMethod1(remark);
                                 personRow2.addView(t7);
                             }else{
                                 personRow2.addView(textMethod1(""));
                             }
                             tableLayout2.addView(personRow2);

                         }
                         personRow1.addView(t1);//
                         personRow1.addView(tableLayout2);
                         tableLayout1.addView(personRow1);
                  }
                  personRow.addView(t);//
                     personRow.addView(tableLayout1);
                tableLayout.addView(personRow);

            }

        }

设置textView对象的背景,以及属性,

    private TextView textMethod1(String s) {
            // TODO Auto-generated method stub
            TextView textView = new TextView(mContext);
            textView.setBackgroundResource(R.drawable.gradient_box);
            textView.setLayoutParams(layoutParam1);
            textView.setTextSize(16);
            textView.setGravity(Gravity.CENTER);
            String value =  s.replaceAll("&#13;&#10;", "\n");
                value = s.replaceAll("&#160;&#160;", "");
            textView.setText(value);
            textView.setTextSize(16);
            textView.setPadding(1, 10, 1, 10);
            return textView;


        }
        private TextView textMethod2(String s) {
            // TODO Auto-generated method stub
            TextView textView = new TextView(mContext);
            textView.setBackgroundResource(R.drawable.gradient_box);//之所以看到现在的表格,其实就是给每个textView对象添加了这个边框
            textView.setLayoutParams(layoutParam2);
            textView.setTextSize(16);
            textView.setGravity(Gravity.CENTER);
            String value =  s.replaceAll("&#13;&#10;", "\n");
                value = s.replaceAll("&#160;&#160;", "");
            textView.setText(value);
            textView.setTextSize(16);
            textView.setPadding(1, 10, 1, 10);
            return textView;


        }
        private TextView textMethod3(String s) {
            // TODO Auto-generated method stub
            TextView textView = new TextView(mContext);
            textView.setBackgroundResource(R.drawable.gradient_box);
            textView.setLayoutParams(layoutParam3);
            textView.setTextSize(16);
            textView.setGravity(Gravity.CENTER);
            String value =  s.replaceAll("&#13;&#10;", "\n");
                value = s.replaceAll("&#160;&#160;", "");
            textView.setText(value);
            textView.setTextSize(16);
            textView.setPadding(1, 10, 1, 10);
            return textView;


        }

gradient_box.xml文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
     <solid android:color="@color/xian"></solid>
    <stroke android:width="0.25dp" android:color="#3000" />
</shape>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值