반응형
가령 숫자버튼 1 ~ 20번까지 있으며 클릭 될때 클릭된 번호의 숫자만 받아 오는 프로그램이 있다고 치면
1~20번의 버튼을 어떻게 해야 할까요?
정말 단순하게 작업 한다면 findViewById 20번에 setOnClickListener도 20번이면 되겠네요...
뭐 애드온 ButterKnife를 사용하면 findViewById는생략해도되니 setOnClickListener 만 20번 돌리면...
혼자 배우다 보니 정말 전 이렇게 작업을 했네요.
위와 같은 역활의 버튼 처리를 좀 더 단순하게 만들어 본다면...
Button 1 ~ 20번 까지의 id = button_no_1 ~ button_no_20 번 까지 있다고 하겠습니다.
Button[] buttonNo = new Button[20];
for (int i = 0; i < buttonNo.length; i++) {
String buttonId = "button_no_" + (i + 1);
buttonNo[i] = findViewById(getResources().getIdentifier(buttonId, "id", getPackageName());
}
Fragment에서 한다면 아래 코드로 적용 하시면 됩니다.
buttonNo[i] = view.findViewById(getResources().getIdentifier(buttonId, "id", (getActivity()).getPackageName()));
getResources().getIdentifier(리소스 이름, 리소스 타입, 패키지명);
리소스 이름은 각 버튼의 id값 이며
리소스 타입의 종류에는 - id, srting, drawable등 R.java에서 쓰이는 타입 입니다.
패키명은 현재 작업중인 패키지의 이름
for (Button buttonId : buttonNo) {
buttonId.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button result = findViewById(view.getId());
Toast.makeText(MainActivity.this, "클릭 : " + result.getText().toString()
, Toast.LENGTH_SHORT).show();
}
});
}
버튼 클릭 처리는 for문을 사용 buttonNo 수 만큼 setOnClickListener를 달아 주며
클릭 이 발생 하면 view.getId()를 result에 넘겨 현재 클릭된 버튼의 값을 출력 하는 것입니다.
간단한 계산기 만들때 적용해 보시면 좋을듯 합니다.
초보 탈출의 그날까지..
반응형
'Android Studio' 카테고리의 다른 글
안드로이드 카드 뒤집기 - Android Flip Animation (0) | 2019.12.11 |
---|---|
숫자 (배열) 랜덤 섞기 - JAVA (0) | 2019.12.09 |
Realm 다중 모델 사용하기 - Android (0) | 2019.11.20 |
JAVA - 랜덤함수 (중복제거) (0) | 2019.09.02 |
파이어베이스 - 쿼리 커서로 데이터 페이지화 (0) | 2019.06.25 |