안드로이드 버튼 onClickLinstener

조회수 2075회

이미지

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

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

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 현재 상태에서 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으로 원하는 처리를 하세요.
    }
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)