private ConstraintLayout cblay_01,cblay_02,cblay_03,cblay_04,cblay_05,cblay_06,cblay_07,cblay_08,cblay_09,cblay_10
,cblay_11,cblay_12,cblay_13,cblay_14,cblay_15,cblay_16,cblay_17,cblay_18,cblay_19,cblay_20
,cblay_21,cblay_22,cblay_23,cblay_24,cblay_25 ;
private CheckBox[] cb_01,cb_02,cb_03,cb_04,cb_05,cb_06,cb_07,cb_08,cb_09,cb_10,cb_11,cb_12,cb_13,cb_14,cb_15,cb_016
,cb_17,cb_18,cb_19,cb_20,cb_21,cb_22,cb_23,cb_24,cb_25;

xml에 버튼이 너무 많아서 id 쓰다가 뒤질 거 같아 방법을 열심히 찾아봄


if (i < 10) {
cblay+i = findViewById(cblay[i]);
cb_01 = findViewById(R.id.cb01);
cblay_01.setOnClickListener(new View.OnClickListener() {
int checking = 0;
@Override
public void onClick(View v) {
if (cb_01.isChecked() == false) {
cb_01.setChecked(true);
}else {
cb_01.setChecked(false);
}
}
});
}
}

솔직히 첫 시도 때 될 줄 알았다 cblay01을 cblay+i 또는 "cblay"+i 하면 될 줄 알았는데 안됨.


cblays = new ConstraintLayout[25];
cbs = new CheckBox[25];

int[] cblaysId = {R.id.cblay_01, R.id.cblay_02, R.id.cblay_03,R.id.cblay_04,R.id.cblay_05,R.id.cblay_06,R.id.cblay_07,R.id.cblay_08,R.id.cblay_09,R.id.cblay_10,
R.id.cblay_11,R.id.cblay_12,R.id.cblay_13,R.id.cblay_14,R.id.cblay_15,R.id.cblay_16,R.id.cblay_17,R.id.cblay_18,R.id.cblay_19,R.id.cblay_20,
R.id.cblay_21,R.id.cblay_22,R.id.cblay_23,R.id.cblay_24,R.id.cblay_25};

int[] cbsId = {R.id.cb01, R.id.cb02, R.id.cb03,R.id.cb04,R.id.cb05,R.id.cb06,R.id.cb07,R.id.cb08,R.id.cb09,R.id.cb10,
R.id.cb11,R.id.cb12,R.id.cb13,R.id.cb14,R.id.cb15,R.id.cb16,R.id.cb17,R.id.cb18,R.id.cb19,R.id.cb20,
R.id.cb21,R.id.cb22,R.id.cb23,R.id.cb24,R.id.cb25};

for(int i = 0; i < 25; i++){
this.cblays[i] = findViewById(cblaysId[i]);
this.cbs[i] = findViewById(cbsId[i]);
this.cblays[i].setOnClickListener(layoutListener);
}

int[] 배열 할때 id 값들이 규칙이 있으면 좋겠는데 만든 순서가 제각각이라 일일히 배열에 넣어야 했음..

무튼 이렇게 하니깐 1000줄 쓸거 4줄로 줄인듯;; 수고링