onClick Listener

2 분 소요

리스너 설정하기

금일 정리할 내용은 udacity강의 중 onclick listener에 대한 내용이다. 아래 내용을 이해하려면 먼저 abstract class 및 interface에 대한 이해가 선행되어야 한다.

아래 사이트에 자세히 정리되어 있으니 기억 안 날 때 읽어보도록 하자.

abstract class

버튼을 클릭했을 때 이벤트를 실행하려면, 먼저 배운 내용인 xml에서 android:onClick에 method명을 선언해서 실행하는 방법이 있지만, 오늘은 실제 개발자들이 어떻게 리스너를 사용해 이벤트를 설정하는지에 대해 배웠다.


아래의 세 가지 스텝으로 이뤄진다.

  1. class를 만들어 Event Listener 행동 정의하기

클릭 이벤트가 발생했을 때 어떤 행동을 할지 정의해 놓는 과정. 이 때, OnClickListener interface를 사용한다. View.java에 정의되어 있는 interface다.

public class MyListener implements View.OnClickListener {

	@Override
	public void onclick(View view){
		//do something
	}
}
  1. Object instance를 하나 만들기

위에서 정의해 놓은 class 를 이용해 인스턴스를 하나 만든다. 이 때 중요한 것은 이 인스턴스 생성코드는 MainActivity.java의 onCreat 안에 있어야 된다. 그래야 화면이 켜지면서 바로 인스턴스가 생성된다.

MyListener listener = new MyListener();
  1. 생성한 리스너 인스턴스를 실제 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
	}
});

댓글남기기