实现TableLayout布局下循环取出TableRow控件中的文字内容到list集合

布局方式为TableLayout,利于实现表单样式展现。

<!-- 详情内容区域 -->
    <ScrollView
        android:layout_above="@id/id_buttom_layout"
        android:layout_below="@id/home_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        >
           
        <TableLayout
            android:id="@+id/id_logTableRow"
            style="@style/table"
            android:layout_marginBottom="10dip"
            android:showDividers="middle">
            
            <TableRow
                style="@style/tablelayout"
                 >
                
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="工单编号:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                 <TextView
                    android:id="@+id/id_docNumber"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
            <TableRow 
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="处&#160;&#160;理&#160;&#160;人:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <TextView
                    android:id="@+id/id_logSolver"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
            <TableRow
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"                    
                    android:gravity="right"
                    android:text="项目名称:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <com.hxzk.ydbg.utils.views.SpinnerView
                    android:id="@+id/id_projectName"
                    android:layout_width="match_parent"
                    android:layout_height="42dp"
                    android:background="@drawable/edittext_bg_drawable"
                    android:layout_gravity="center_vertical"
                    android:textSize="@dimen/normal_text_size"
                    android:gravity="center"
                    />
            </TableRow>
            
            <TableRow
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="负&#160;&#160;责&#160;&#160;人:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <TextView
                    android:id="@+id/id_projectLeader"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
            <TableRow
                style="@style/tablelayout"
                 >
                
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="客户地址:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                 <TextView
                    android:id="@+id/id_projectAddress"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
            <TableRow
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="需求类型:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <com.hxzk.ydbg.utils.views.SpinnerView
                    android:id="@+id/id_logType"
                    android:layout_width="match_parent"
                    android:layout_height="42dp"
                    android:background="@drawable/edittext_bg_drawable"
                    android:layout_gravity="center_vertical"
                    android:textSize="@dimen/normal_text_size"
                    android:gravity="center"
                    />
            </TableRow>
            
            <TableRow 
                style="@style/tablelayout">
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="需求描述:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <EditText
                    android:id="@+id/id_logDepict"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="请填写需求的简单描述"
                    android:textSize="18sp"
                    android:inputType="textMultiLine"
                    android:minLines="3"
                    android:maxLines="100"
                    android:gravity="top"
                       android:background="@drawable/edittext_bg_drawable"
                    />
            </TableRow>
            
            <TableRow 
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="处理结果:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                
                <EditText
                    android:id="@+id/id_logResult"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="请填写需求的处理结果"
                    android:textSize="18sp"
                    android:inputType="textMultiLine"
                    android:minLines="5"
                    android:maxLines="100"
                    android:gravity="top"
                       android:background="@drawable/edittext_bg_drawable"
                    />
            </TableRow>
            
            <TableRow 
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="创建时间:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <TextView
                    android:id="@+id/id_logCreateTime"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
            
            <TableRow 
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="处理时间:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <TextView
                    android:id="@+id/id_logSolveTime"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
            <TableRow 
                style="@style/tablelayout" >
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:gravity="right"
                    android:text="客户签字&#160;
时&#160;&#160;&#8201;&#160;&#160;&#8201;&#160;&#160;&#8201;间:" 
                    android:textSize="@dimen/normal_text_size"
                    />
                <TextView
                    android:id="@+id/id_signTime"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dip"
                    android:paddingRight="10dip"
                    android:gravity="left"
                    android:textSize="@dimen/normal_text_size"
                    android:textColor="@color/balck"
                    />
            </TableRow>
            
           
            
            
        </TableLayout>
    </ScrollView>
tablelayout

在Java代码中通过getChildCount、getChildAt获取tablelayout布局下的tablerow,然后再通过getChildCount、getChildAt获取tablerow下的子控件,最后通过instanceof校验对象类型并调用对应的方法获取文本。

/**表单区域*/
private TableLayout id_logTableRow;

private ArrayList<String> titleList;

初始化:

id_logTableRow = (TableLayout) initview.findViewById(R.id.id_logTableRow);
titleList = new ArrayList<String>();
        TableRow[] childs = new TableRow[id_logTableRow.getChildCount()];
        for(int i=0;i<childs.length;i++){
            childs[i] = (TableRow) id_logTableRow.getChildAt(i);
            View[] childss = new View[childs[i].getChildCount()];
            childss[0] = childs[i].getChildAt(0);
            childss[1] = childs[i].getChildAt(1);
            
            String labelStr = ((TextView)childss[0]).getText().toString();//每一行的左侧标签
            String infoStr = "";
            /**
             * 校验对象类型,然后再进行强类型转换,以便获取控件中的文本*/
            if(childss[1] instanceof TextView){
                infoStr = ((TextView)childss[1]).getText().toString();//每一行的左侧标签
            }else if(childss[1] instanceof SpinnerView){
                infoStr = ((SpinnerView)childss[1]).getText().toString();//每一行的左侧标签
            }
            else if(childss[1] instanceof EditText){
                infoStr = ((EditText)childss[1]).getText().toString();//每一行的左侧标签
            }else{
                infoStr = " ";
            }
            
            titleList.add(labelStr + infoStr);
        }
        

打印结果:

for(int i=0;i<titleList.size();i++){
            Log.v("WriteLogInfoWordFragment", (i+1) + ":" + titleList.get(i));
        }

原文地址:https://www.cnblogs.com/whycxb/p/5063328.html