1. 버튼이란?
- 사용자가 누르면 개발자가 작성한 코드가 동작하는 뷰
2. 리스너
- 해당 사건이 발생했을 때 자동으로 호출될 메소드를 갖고 있는 클래스
- Button의 리스너 : OnClickListener
3. 버튼을 클릭했을 때 발생할 이벤트 구현 - 해당 이벤트에 대한 인터페이스를 구현한 클래스를 만들고 그 객체 생성해서 세팅
1. Button, TextView하나를 생성
2.
2-1) OnClickListner 인터페이스를 구현한 클래스 생성
2-2) onClick() 오버라이드
2-3) 텍스트뷰에 클릭되었을 때 출력할 텍스트 세팅
// 자바는 인터페이스 만들 때 implements 키워드
// 코틀린은 상속 or 인터페이스 만들 때 :(콜론)
inner class BtnListner:View.OnClickListener
{
override fun onClick(v: View?)
{
textView1.text = "지존 현지 버튼이 클릭되었습니다";
}
}
3.
3-1) onCreate() 함수에 리스너 객체 생성
3-2) 클릭할 Button에 리스너 객체 세팅.
override fun onCreate(savedInstanceState: Bundle?) {
// 리스너 객체 생성
var listner = BtnListner();
button16.setOnClickListener(listner);
}
주요 함수 | 설명 |
setOnClickListener() | 버튼에 리스너 객체를 세팅. |
4. 리스너 하나에 여러개의 버튼을 붙이는 경우 - 해당 이벤트에 대한 인터페이스를 구현한 클래스를 만들고 그 객체 생성해서 세팅
1. 리스너에 연결한다.
override fun onCreate(savedInstanceState: Bundle?) {
var listner3 = BtnListner3();
button3.setOnClickListener(listner3);
button4.setOnClickListener(listner3);
}
2. 리스너에서 when 분기절로 버튼의 id를 받아와 하고싶은 작업을 처리한다.
inner class BtnListner3:View.OnClickListener
{
override fun onClick(v: View?) {
when(v?.id)
{
R.id.button3 ->
textView1.text = "존못";
R.id.button4 ->
textView1.text = "2월7일";
}
}
}
5. 버튼을 클릭했을 때 발생할 이벤트 구현 - 람다식으로 표현
- 위의 예제처럼 상속하고, OnCreate()에서 객체 생성해서 할당할 수도 있지만 코틀린에서는 람다식으로 한 번에 표현할 수 있다.
override fun onCreate(savedInstanceState: Bundle?)
{
// setOnClickListner에서 선택할 수 있다.
button5.setOnClickListener
{ view ->
textView1.text = "이춘덕";
}
button6.setOnClickListener
{ view->
textView1.text = "8월8일";
}
}
6. 리스너 하나에 여러개의 버튼을 붙이는 경우 - 람다식으로 표현
override fun onCreate(savedInstanceState: Bundle?)
{
var listener4 = View.OnClickListener
{ view ->
when(view.id)
{
R.id.button7 ->
textView1.text = "여자";
R.id.button8 ->
textView1.text = "아톰";
}
}
button6.setOnClickListener(listener4);
button7.setOnClickListener(listener4);
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - 라디오 버튼 (0) | 2020.02.07 |
---|---|
안드로이드 - CheckBox (0) | 2020.02.07 |
안드로이드 - View - TextView (0) | 2020.02.07 |
안드로이드 - View - Layout (0) | 2020.02.07 |
안드로이드 - View (0) | 2020.02.07 |