본문 바로가기
안드로이드

view의 속성을 바꾸고 이벤트 처리를 해보자

by Beijing_KingGod 2020. 3. 31.

앱이 동작되는 동안에 바뀌는 속성이나, 클릭 등의 이벤트를 처리하는 부분은 코틀린 코드로 작성한다.

 

view id 는 camel 표기법을 지향한다. 첫소문자 그다음 단어 대문자 nameButton 

 

onCreate 함수에서 레이아웃을 설정한 이후에는 setContentView(R.layout.activity_main) 

우리가 layout안에 있는 모든 view의 id를 그대로 view의 인스턴스 변수로 참조가 가능하다.

 

이는 android extension 패키지에서 지원하는 기능을  이용하는 것이다. -> id.속성 이나 id.함수() 를 사용할수 있다.

 

 

옵저버 패턴 : 이벤트가 일어나는 것을 감시하는 감시자의 역할을 만든다고 하여 옵저버라고 한다.

키입력, 터치 발생, 데이터 수신등

함수로 직접 요청하지 않앗지만, 시스템 또는 루틴에 의해서 발생하게 되는 동작들을 이벤트라고 부르며

이 이벤트가 발생할때 마다 즉각적으로 처리 할수 있도록 만드는 프로그래밍 패턴을 옵저버 패턴이라고 부른다.

 

옵저버 패턴 예...

fun main(){
    EventPrinter().start()
    println()
    EventPrinter2().start()
}

interface EventListener{
    fun onEvent(count : Int)
}

class Counter(var listener : EventListener){
    fun count(){
        for(i in 1..100){
            if(i%5 == 0) listener.onEvent(i)
        }
    }
}

class EventPrinter: EventListener{
    override fun onEvent(count: Int){
        print("${count}-")
    }
    fun start(){
        val counter = Counter(this)
        counter.count()
    }
}
class EventPrinter2 {
    fun start(){
        val counter = Counter(object : EventListener{
            override fun onEvent(count : Int){
                print("${count}-")
            }
        })
        counter.count()
    }
}

 

 

 

버튼 리스너 사용법

package com.example.exam2

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        inputButton.setOnClickListener(object : View.OnClickListener{
            override fun onClick(v: View?) {
                if(nameEdit.text.isBlank()) {
                    greetText.text = "이름이 없습니다."
                }else{
                    greetText.text = "${nameEdit.text}님 반갑습니다."
                }
            }

        })
    }
}

 

'안드로이드' 카테고리의 다른 글

checkbox 와 radiobutton  (0) 2020.04.01
image view  (0) 2020.04.01
layout  (0) 2020.03.31
view  (0) 2020.03.31
Activity  (0) 2020.03.31

댓글