[Android] View의 이벤트와 리스너

Study/Android Studio 2021. 2. 4. 14:23 Posted by meanoflife
반응형

View의 Event와 Listener

 

각각의 View들은 고유한 이벤트를 가지고 있습니다.

이벤트 발생시 이를 처리하는 Listener에 대해 알아 보겠습니다.

 

  - Event : 뷰에서 다양한 동작이 발생하거나 상태가 변경될 때 발생하는 함수.

  - Listener : 뷰의 이벤트 발생시, 이를 받아 처리할 수 있는 인터페이스.

 

처리 방식을 알아보기 위해

버튼을 클릭했을 때 발생하는 OnClick() 이벤트로 진행해 보겠습니다.

 

 

Listener를 구현하는 방법

 

  1. XML에서 속성을 정의하고 메소드를 호출하는 방법

  2. 익명클래스를 이용하는 방법

  3. 람다식을 이용하는 방법

  4. 별도의 인터페이스 클래스를 이용하는 방법

  5. Activity에서 인터페이스를 정의하는 방법

 

1. XML에서 속성을 정의하고 메소드를 호출하는 방법

 

XML에서 이벤트속성 및 호출할 메소드를 정의하고, Activity.class에서 XML에 정의된 메소드를 구현하는 방법입니다.

 

<Button
    android:layout_width="wrap_context"
    android:layout_height="wrap_context"
    android:text="버튼"
    android:onClick="button_OnClick" />

[소스] xml 정의

 

public void button_OnClick(View v) {
    TextView textView = findViewById(R.id.txtName);
    textView.setText("클릭되었습니다.");
}

[소스] Activity.class

 

2. 익명클래스anonymous-class를 이용하는 방법

 

Activity.class에서 setOnClickListener()로 이벤트를 정의 및 구현하는 방법입니다.

Button btn = findViewById(R.id.btn);

btn.setOnClickListener(new View.onClickListener() {
    @Override
    public void onClick(View v) {
        TextView textView = findViewById(R.id.txtName);
        textVew.setText("클릭되었습니다.");
    }
});

[소스] 익명클래스를 이용한 Activity.class

 

3. 람다식lambda-expression을 이용하는 방법

  - 람다식 : 식별자 없이 실행 가능한 함수로, (인자)->{함수내용}으로 표현합니다.

Button btn = findViewById(R.id.btn);

btn.setOnClickListener((v)-> {
        TextView textView = findViewById(R.id.txtName);
        textVew.setText("클릭되었습니다.");
});

[소스] 람다식을 이용한 Activity.class

 

4. 별도의 인터페이스 클래스를 이용하는 방법

 

인터페이스를 이용하여 처리하는 방법입니다.

동일한 동작을 여러 객체에서 수행할 때 유용합니다.

class MyListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        TextView textView = findViewById(R.id.txtName);
        textVew.setText("클릭되었습니다.");
    }
}

[소스] Interface를 이용한 MyListener.class

 

5. Activity에서 인터페이스를 정의하는 방법

 

Activity.class 내부에 인터페이스를 정의하여 사용하는 방법입니다.

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    public void onCreate() {
        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(this);
    }
}

@Override
public void onClick(View v) {
        TextView textView = findViewById(R.id.txtName);
        textVew.setText("클릭되었습니다.");
}

[소스] Class내에서 Interface를 이용한 Activity.class

 

View의 이벤트 발생시 Listener를 정의해서 처리하는 방법을 알아보았습니다.

상황에 맞게 원하는 스타일로 사용하시면 됩니다.

 

The End.

 

반응형