从Android中动态创建的表行读取值时出错

从Android中动态创建的表行读取值时出错,android,tablerow,Android,Tablerow,因此,我有两个动态创建的TableRow。每个TableRow都有两个TextView。我有一个按钮,单击该按钮可以获取表中每个TableRow中第二个和第三个TextView的所有值。我已经尝试使用下面的代码来实现这一点 mSubmitOrders.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(mTable.get

因此,我有两个动态创建的TableRow。每个TableRow都有两个TextView。我有一个按钮,单击该按钮可以获取表中每个TableRow中第二个和第三个TextView的所有值。我已经尝试使用下面的代码来实现这一点

          mSubmitOrders.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
            if(mTable.getChildCount()>1){
                for(int i = 0; i < mTable.getChildCount(); i++){

                    TableRow tr =  (TableRow)mTable.getChildAt(i);
                    TextView code = (TextView) tr.getChildAt(1);
                    TextView quantity = (TextView) tr.getChildAt(2);

                    String Scode = code.getText().toString();
                    Log.i("TAG", Scode);
                    String Squantity = quantity.getText().toString();
                    Log.i("TAG", Squantity);


            }   
            }
已解决: 在@zacck获得帮助后,我终于解决了这个问题:

                 for(int i = 0; i < mTable.getChildCount(); i++){
                    TableRow tr = (TableRow) mTable.getChildAt(i);

                    LinearLayout l1 = (LinearLayout)tr.getChildAt(1);
                    LinearLayout l2 = (LinearLayout)tr.getChildAt(2);



                    TextView code = (TextView)l1.getChildAt(0);
                    sCode = code.getText().toString();
                    Log.v("Inserted---->", sCode);
                    codeA[i]=sCode;


                    TextView quantity = (TextView)l2.getChildAt(0);
                    sQuantity = quantity.getText().toString();
                    Log.v("Inserted--->", sQuantity);
                    quantityA[i]=sQuantity;

            }
for(int i=0;i”,sCode);
codeA[i]=sCode;
TextView数量=(TextView)l2.getChildAt(0);
sQuantity=quantity.getText().toString();
Log.v(“插入-->”,平方);
数量a[i]=平方;
}

在此之前,您必须通过
setTag(position)
标记行的单个视图,或者您可以使用任何唯一值作为参数。然后,您可以通过引用
getTag()

来获取视图内容。tablerows是在TableLayout中动态创建的……因此,当您说我使用setTag(position)时,我假设position是一个int值来唯一标识tablerow?我该怎么做?对于每一行,你可以将标记设置为row.setTag(“row NO”);然后,对于该行中的每个视图,将标记设置为。。对于(int i=0;i
                 for(int i = 0; i < mTable.getChildCount(); i++){
                    TableRow tr = (TableRow) mTable.getChildAt(i);

                    LinearLayout l1 = (LinearLayout)tr.getChildAt(1);
                    LinearLayout l2 = (LinearLayout)tr.getChildAt(2);



                    TextView code = (TextView)l1.getChildAt(0);
                    sCode = code.getText().toString();
                    Log.v("Inserted---->", sCode);
                    codeA[i]=sCode;


                    TextView quantity = (TextView)l2.getChildAt(0);
                    sQuantity = quantity.getText().toString();
                    Log.v("Inserted--->", sQuantity);
                    quantityA[i]=sQuantity;

            }