본문 바로가기
패스트캠퍼스 30일챌린지

[안드로이드] 패스트캠퍼스 챌린지 16일차!!

by 욧닭 2021. 9. 21.
반응형

들어가며

이제 이어서 로또 추첨기의 기능을 구현해 볼 시간입니다! 레이아웃을 예쁘게 만들었으니 이제 기능도 깔끔하게? 음 코딩적으로 이쁘게죠! 이쁘게 구현해볼 시간입니다

로또 추첨기 UI는 버튼 3개와 넘버피커 하나 다수의 텍스트 뷰로 구현되어 있습니다

이제 하나하나 기능들을 살펴 볼까요?

CODE

처음으로 해야할 일은 view들을 선언해주는 일입니다

private val clearButton: Button by lazy{
    findViewById<Button>(R.id.clearButton)
}

다음과 같이 선언과 동시에 초기화를 하는 방식입니다! 만약 layz함수를 사용하지 않고 바로 private val clearButton: Button = findViewById(R.id.clearButton) 이라고 했을때 위 코드는 에러를 발생 시킵니다!

위 변수들은 class의 필드 변수라고도 하고 전역 변수라고도 합니다 따라서 저 findViewById 인수로 받는 R 은 전역으로 사용시 접근을 할 수 없다고 나옵니다! 그래서 by lazy함수를 사용하여 R을 인식 할 수 있도록 만든 것입니다!

다음으로는 넘버 픽커입니더 넘버 피커란 스크롤 형식으로 되어 있는 view로 max숫자와 min 숫자를 사용할 수 있습니다

private val numberPicker: NumberPicker by lazy{
    findViewById<NumberPicker>(R.id.numberPicker)
}

numberPicker.minValue = 1
numberPicker.maxValue = 45

로또 추첨기 답게 1부터 45까지의 숫자를 고를 수 있도록 초기화 해줍니다 저기 있는 minValue와 maxValue는 앞에 get 을 붙히고 있는 함수입니다 예를들면 getMinValue로 포현 할 수도 있겠네요!!

이렇게 view에 대한 초기화는 끝냈고 랜덤 숫자 뽑기 를 위해 버튼 의 클릭 리스너를 사용하여 랜덤한 숫자 6개를 뽑아 보겠습니다

randomButton.setOnClickListener {
    val numberList = mutableList<Int>().apply{
        for(i in 1..45){
            add(i)
        }
    }
    numberList.suffle()
    val newList = numberList.subList(0, 6)
}

숫자 리스트를 1부터 45까지 하나씩 하나씩 apply 함수를 통해서 add를 합니다 이때 원래는 list.add가 필요하지만 add만 해도 리스트에 추가 되겠금 하였습니다.

셔플을 통해서 리스트를 섞고 6개를 뽑습니다 굉장히 kotlin 스러운 코드입니다

이렇게 랜덤한 값을 뽑을 수 있는 기능까지 보았습니다 확실히 by lazy나 apply 등 다양한 extention function 들을 사용해서 기능 구현을 하는 것을 볼 수 있겠습니다. 아마 갈수록 이런 함수들을 많이 애용할 예정인 것 같습니다!! 내일이 더 기대대는 강의네요!! ㅎㅎ

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발#패스트캠퍼스후기#30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

반응형

댓글