wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 17일차

Kick_snare 2022. 2. 9. 23:54
728x90

17일차

30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

강의 목표


  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
  • 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.

목차 02 Basic - Ch02. 로또 번호 추첨기


  • 인트로(완성앱&구현기능소개)
  • Collection 개념 소개
  • 로또 번호 추첨 알고리즘 생각해보기
  • Constraintlayout 이용하여 기본 UI 그리기(1)
  • Constraintlayout 이용하여 기본 UI 그리기(2)
  • 기능 구현하기(1)
  • 기능 구현하기(2)
  • Resource를 이용하여 꾸며보기
  • 아웃트로(정리)

기능 구현하기(2)

  • 랜덤번호 추출 시, 이미 선택하여 추가한 번호를 제외하고 숫자를 뽑아야 한다
  • 이미 선택된 번호와, 중복되지 않는 리스트를 합쳐 반환하도록 getRandomNumber() 함수를 수정한다
private fun getRandomNumber(): List<Int> {
    val numberList = mutableListOf<Int>().apply {
        for(i in 1..45) {
            if(pickNumberSet.contains(i)) continue
            this.add(i)
        }
    }
    numberList.shuffle()
    return pickNumberSet.toList() + numberList.subList(0,6 - pickNumberSet.size).sorted()
}
  • shuffle하여 일부분만 추출하기 전, 이미 선택한 번호를 제외하고 초기화 한다
  • 먼저 선택한 리스트와 후에 중복없이 추출한 리스트를 합친다
  • 자동 생성 버튼을 눌러 getRandomNumber() 함수를 통해 6개의 리스트를 모두 받아올 수 있다
  • 받아온 리스트를 반복문을 통하여 textView 부분에 표시해준다
private fun initRunButton() {
    runButton.setOnClickListener {
        val list = getRandomNumber()
        didRun = true

        list.forEachIndexed { idx, num ->
            val textView = numberTextViewList[idx]

            textView.text = num.toString()
            textView.isVisible = true
        }
    }
}
  • forEachIndexed 문을 이용하면 순회하면서 원소 자체와 인덱스 모두 접근할 수 있다
  • View 파트의 text값과 visibility를 수정해준다

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

수강인증샷

링크

https://bit.ly/37BpXiC

728x90