안드로이드 버튼 onClickLinstener


이미지

다음과 같이 동적으로 버튼을 25개 만들었습니다. 이제 각각의 버튼에 온클릭리스너를 달고 싶은데 rowCounter, columCounter을 인자로 받고 싶습니다.

xml상에서 만든 버튼이 아니라서 어디서 해당 버튼에 접근해야하는지 모르겠습니다.

각각의 버튼이 하는 일이 같아 하나의 리스너만 사용하고 싶습니다.


조회수 173


1 답변


좋아요
0
싫어요
채택취소하기

현재 상태에서 row, column을 직접적으로 알 수 있는 방법은 없습니다. 해당 정보를 알기위해서는 추가적인 구현이 필요한 상태고요. 몇가지 방법이 있을 것 같습니다만 제일 먼저 떠오르는 생각을 코드로 작성해봤습니다. (완전한 코드는 아니니 구현에 참고만 하세요)

올려주신 코드에서 2차원 배열이 아닌 List를 사용합니다.

List<ImageButton> buttons = new ArrayList<>();
for (int row = 0; row < DIMENSION; row++) {
    for (int column = 0; < column < DIMENSION; column++) {
        ImageButton button = new ImaegButton(this);
        ...
        button.setOnClickListener(this);
        buttons.add(imageButton);
    }
}

다음 부분은 클릭 리스너입니다. List에서 현재 클릭된 View의 인덱스를 이용해 row, column을 계산하는 방식입니다.

@Override
public void onClick(View v) {
    int index = buttons.indexOf(v)
    int row = index / 3;
    int column = index % 3;

    // 위에서 얻은 row, column으로 원하는 처리를 하세요.
}

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close