버튼을 10개 이상을 한번에 사용하는데
여러분들은 이럴때 어떤 방법으로 사용하시나요..?
소스로 하는게 낳을지 직접 노가다로 등록하는게 낳을지요~
저는 버튼 갯수를 실 시간으로 적용을 해야해서 xml에는 table만 정의해놓고 다음과 같이 하였습니다.
for (i=0; i<TOTAL_HEIGHT; i++) {
/* Create a new row to be added. */
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT, 1));
for (j=0; j<TOTAL_WIDTH; j++) {
/* Create a Button to be the row-content. */
ArrBlockButton[i*TOTAL_WIDTH+j] = new Button(this);
ArrBlockButton[i*TOTAL_WIDTH+j].setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT, 1));
ArrBlockButton[i*TOTAL_WIDTH+j].setId(10000 + i*TOTAL_WIDTH+j);
ArrBlockButton[i*TOTAL_WIDTH+j].setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
for (int i = 0; i < ArrBlockButton.length; i++) {
if (ArrBlockButton[i].getId() == v.getId()) {
Log.d(TAG, "Click CurrentButtonIndex " + i + " " + ArrBlockButton.length);
CurrentButtonIndex = i;
break;
}
}
}
});
/* Add Button to row. */
tr.addView(ArrBlockButton[i*TOTAL_WIDTH+j]);
}
/* Add row to TableLayout. */
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT, 1));
}




버튼들에대한 layout 는 무조건 xml 에서 하시는 것이 맞습니다.
그리고, 이벤트 처리 또한, 하나의 이벤트 리스너에 switch ~ case 문으로 처리하시는 것이 코드가 깔끔하겠죠.