onClick Listener
리스너 설정하기
금일 정리할 내용은 udacity강의 중 onclick listener에 대한 내용이다. 아래 내용을 이해하려면 먼저 abstract class 및 interface에 대한 이해가 선행되어야 한다.
아래 사이트에 자세히 정리되어 있으니 기억 안 날 때 읽어보도록 하자.
버튼을 클릭했을 때 이벤트를 실행하려면, 먼저 배운 내용인 xml에서 android:onClick
에 method명을 선언해서 실행하는 방법이 있지만, 오늘은 실제 개발자들이 어떻게 리스너를 사용해 이벤트를 설정하는지에 대해 배웠다.
아래의 세 가지 스텝으로 이뤄진다.
- class를 만들어 Event Listener 행동 정의하기
클릭 이벤트가 발생했을 때 어떤 행동을 할지 정의해 놓는 과정. 이 때, OnClickListener
interface를 사용한다. View.java에 정의되어 있는 interface다.
public class MyListener implements View.OnClickListener {
@Override
public void onclick(View view){
//do something
}
}
- Object instance를 하나 만들기
위에서 정의해 놓은 class 를 이용해 인스턴스를 하나 만든다. 이 때 중요한 것은 이 인스턴스 생성코드는 MainActivity.java의 onCreat 안에 있어야 된다. 그래야 화면이 켜지면서 바로 인스턴스가 생성된다.
MyListener listener = new MyListener();
- 생성한 리스너 인스턴스를 실제 view에 Attach하기
MainActicity.java에서 findViewbyId를 이용해 view를 찾고 거기에 setOnClickListener method를 이용해 attach한다.
TextView textview = (TextView) findViewById(R.id.textview);
textview.setOnClickListener(listener);
위 3가지 과정은 아래와 같이 간소화될 수 있다.
먼저 스텝 2와 3을 합칠 수 있다. MyListener
인스턴스 변수를 따로 선언하여 전달하지 말고 바로 new MyListener();
를 setOnClickListener
에 넣어버린다.
TextView textview = (TextView) findViewById(R.id.textview);
textview.setOnClickListener(new MyListener(););
이제 다른 곳에 정의되어 있는 MyListener
Class를 해당 위치에 바로 정의 내려보자. MyListener
처럼 새로운 class명을 만들지 말고 OnClickListener
의 anonymous subclass를 사용하면 된다.
TextView textview = (TextView) findViewById(R.id.textview);
textview.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
//do something
}
});
댓글남기기