【Java】TableLayoutからTableRow内の全データにアクセスする方法
javaは不慣れだったので、TableLayoutで作った以下の9×9のマスを浚おうとして詰まりました。
最初はすべてのTextViewをビューバインディングで取得してはsetTextするという最悪なことをやっていましたが、ふつうにfor文ぶん回してひたすらキャストしてgetChildAtするだけでできますよね。
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); for (int x = 0; x < 9; x++) { TableRow tableRow = ((TableRow)binding.boardLayout.getChildAt(x)); for (int y = 0; y < 9; y++) { TextView textView = (TextView) tableRow.getChildAt(y); textView.setText("何か"); } }
UIは以下のが延々と続きます。
<TableLayout android:id="@+id/boardLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginTop="164dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" > <TableRow android:id="@+id/row1" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView11" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView12" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView13" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView14" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView15" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView16" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView17" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView18" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> <TextView android:id="@+id/textView19" android:layout_width="40dp" android:layout_height="40dp" android:gravity="center" android:background="@drawable/frame" android:text="@string/blank" android:textSize="30sp" /> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/row2"> 以下略
以下がfor文を使わなかったときの暴挙
binding.textView11.setText("何か"); binding.textView12.setText("何か"); binding.textView13.setText("何か"); binding.textView14.setText("何か"); binding.textView15.setText("何か"); binding.textView16.setText("何か"); binding.textView17.setText("何か"); binding.textView18.setText("何か"); binding.textView19.setText("何か"); binding.textView21.setText("何か"); binding.textView22.setText("何か"); binding.textView23.setText("何か"); binding.textView24.setText("何か"); binding.textView25.setText("何か"); binding.textView26.setText("何か"); binding.textView27.setText("何か"); binding.textView28.setText("何か"); binding.textView29.setText("何か"); binding.textView31.setText("何か"); binding.textView32.setText("何か"); binding.textView33.setText("何か"); binding.textView34.setText("何か"); binding.textView35.setText("何か"); binding.textView36.setText("何か"); binding.textView37.setText("何か"); binding.textView38.setText("何か"); binding.textView39.setText("何か"); binding.textView41.setText("何か"); binding.textView42.setText("何か"); binding.textView43.setText("何か"); binding.textView44.setText("何か"); binding.textView45.setText("何か"); binding.textView46.setText("何か"); binding.textView47.setText("何か"); binding.textView48.setText("何か"); binding.textView49.setText("何か"); binding.textView51.setText("何か"); binding.textView52.setText("何か"); binding.textView53.setText("何か"); binding.textView54.setText("何か"); binding.textView55.setText("何か"); binding.textView56.setText("何か"); binding.textView57.setText("何か"); binding.textView58.setText("何か"); binding.textView59.setText("何か"); binding.textView61.setText("何か"); binding.textView62.setText("何か"); binding.textView63.setText("何か"); binding.textView64.setText("何か"); binding.textView65.setText("何か"); binding.textView66.setText("何か"); binding.textView67.setText("何か"); binding.textView68.setText("何か"); binding.textView69.setText("何か"); binding.textView71.setText("何か"); binding.textView72.setText("何か"); binding.textView73.setText("何か"); binding.textView74.setText("何か"); binding.textView75.setText("何か"); binding.textView76.setText("何か"); binding.textView77.setText("何か"); binding.textView78.setText("何か"); binding.textView79.setText("何か"); binding.textView81.setText("何か"); binding.textView82.setText("何か"); binding.textView83.setText("何か"); binding.textView84.setText("何か"); binding.textView85.setText("何か"); binding.textView86.setText("何か"); binding.textView87.setText("何か"); binding.textView88.setText("何か"); binding.textView89.setText("何か"); binding.textView91.setText("何か"); binding.textView92.setText("何か"); binding.textView93.setText("何か"); binding.textView94.setText("何か"); binding.textView95.setText("何か"); binding.textView96.setText("何か"); binding.textView97.setText("何か"); binding.textView98.setText("何か"); binding.textView99.setText("何か");