0

したがって、動的に作成されたテーブル行がいくつかあります。各テーブル行にはテキストビューがいくつかあります。クリックすると、テーブル内の各テーブル行の 2 番目と 3 番目のテキストビューのすべての値を取得するボタンがあります。以下のコードを使用してこれを実行しようとしました

          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);


            }   
            }

しかし、以下のエラーが発生します (以下の Logcat)。介助が必要

10-22 09:00:16.345: E/AndroidRuntime(4495): FATAL EXCEPTION: main
10-22 09:00:16.345: E/AndroidRuntime(4495): java.lang.ClassCastException:       android.widget.LinearLayout cannot be cast to android.widget.TextView
10-22 09:00:16.345: E/AndroidRuntime(4495):     at com.symetry.myitprovider.ui.actual$4.onClick(actual.java:173)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at android.view.View.performClick(View.java:3131)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at android.view.View$PerformClick.run(View.java:12035)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at android.os.Handler.handleCallback(Handler.java:587)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at android.os.Looper.loop(Looper.java:132)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at android.app.ActivityThread.main(ActivityThread.java:4123)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at java.lang.reflect.Method.invoke(Method.java:491)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
10-22 09:00:16.345: E/AndroidRuntime(4495):     at dalvik.system.NativeStart.main(Native Method)

解決済み: @zackk で助けを得た後、最終的に解決した方法は次のとおりです。

                 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;

            }
4

1 に答える 1

0

その前に、uは行の個々のビューにタグを付ける必要がありsetTag(position)ます。または、uは任意の一意の値をパラメーターとして使用できます。次に、uはの参照によってビューのコンテンツを取得できます getTag()

于 2012-10-22T06:22:10.767 に答える