마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

setOnClickListener, View.OnClickListener 질문드립니다.(인자 넘기기)

0 추천
안녕하세요

클릭리스너에 대해 궁금한것이 있어서 질문드립니다..

 

버튼을 하나 생성해서 리스너를 다는 과정에서

public void customView(int i)

{

   btn.setOnClickListener(new View.OnClickListener()

   { i = i~~~~~} 처리

}

이렇게 줄 수도 있고

 

public void customView(int i)

{

   btn.setOnClickListener(myListener);

}

View.OnclickListener myListener = new View.OnClickListener()

{

    public void onClick(View v)

     {  처리  }

};

 

이렇게 따로 리스너를 밖으로 빼서 Switch문을 쓰든해서 관리하는 방법이 있는데

 

클릭처리하는 부분이 많아질수록 2번째처럼 관리하는게 편해서 사용중인데

위에서 첫번째 방법으로 하면 클릭했을때 i값을 쉽게 처리할 수 있는데

 

2번째 방법으로 하면 i값을 처리하기가 까다로운것 같습니다.

(따로 리스너 달면서 동시에 i값을 넘길수가 없는 것 같아서..)

굳이 사용하려면 전역변수를 하나 더 두고 넘기면서 처리하는 중인데

변수를 따로 하나 더 안두고도 i값을 그대로 받는 방법이 있나요?

(RecyclerView의 포지션이나,, 동적인 페이지를 만들때 index값을 받아서 처리해야하는데

 전역변수를 하나 더 두고 하는방법이 맞는건지 아니면 다른 방법이 있는지 궁금합니다)
익명사용자 님이 2016년 12월 21일 질문

1개의 답변

0 추천
 
채택된 답변

저라면 이렇게 하겠습니다.

 

CustomListener myCustomListener = null;

 

public void customView(int i, CustomListener listener)
{
   

   this.myCustomListener = listener;
   btn.setOnClickListener(myListener);

}



View.OnclickListener myListener = new View.OnClickListener()

{

    public void onClick(View v)

     { 

         if(myCustomListener != null)

              myCustomListener.onClick(v, i);

     }

};
 

 

interface CustomListener{

  void onClick(View v, int i);

}

Development Guy (70,570 포인트) 님이 2016년 12월 21일 답변
감사합니다 한번 해볼게여 ^^
...