본문 바로가기
Programando/Android

[Android/Kotlin] Apply, TextView_(3)

Random( )

fun Random(seed : Int): Random

: Random 함수에서 seed 값을 정해주게 되면 그 값을 기준으로 특정한 Random 알고리즘을 돌려 나오게 되므로 다음에 어떤 숫자가 나올지 대충 예측이 가능하다. 그렇기 때문에 Random한 숫자를 얻기 위해서는 seed 값을 무작위하게 바꿔주어야 한다.

 

import java.util.*

fun main() {
    
    val random = Random()
    val numberSet = mutableSetOf<Int>()
    
    while (numberSet.size < 6) {
        
    	val randomNumber = random.nextInt(45) + 1
    	// nextInt(45)는 0~44까지만 나오게 된다.
    	numberSet.add(randomNumber)
    }
    
    println(numberSet)
}

 

apply

: 초기화하는 구문에서 많이 사용한다.

import java.util.*

fun main() {
    
    val random = Random()
    val list = mutableListOf<Int>().apply {
        for(i in 1..45) {
            this.add(i)
        } // 1 ~ 45라는 숫자를 list에 추가
    }
    
    println(list)
}

 

 

Shuffle( )

: List의 요소들이 랜덤하게 순서가 섞인다.

import java.util.*

fun main() {
    
    val random = Random()
    val list = mutableListOf<Int>().apply {
        for(i in 1..45) {
            this.add(i)
        }
    }
    
    list.shuffle()
    
    println(list)
}

 

subList(fromIndex: Int, toIndex: Int)

import java.util.*

fun main() {
    
    val random = Random()
    val list = mutableListOf<Int>().apply {
        for(i in 1..45) {
            this.add(i)
        }
    }
    
    list.shuffle()
    
    println(list.subList(0, 6))
    // [0, 6)
}

 

TextView List를 만들고, 초기화하기

private val numberTextViewList: List<TextView> by lazy {

    listOf<TextView>(
        findViewById<TextView>(R.id.tv_first_num),
        findViewById<TextView>(R.id.tv_second_num),
        findViewById<TextView>(R.id.tv_third_num),
        findViewById<TextView>(R.id.tv_fourth_num),
        findViewById<TextView>(R.id.tv_fifth_num),
        findViewById<TextView>(R.id.tv_six_num)
    )

}

 

TextView의 속성

val textView = numberTextViewList[i] // List를 배열처럼 사용할 수 있다.

textView.isVisible = false     // textView가 화면에 보이지 않게 된다.
textView.isVisible = true      // textView가 화면에 보인다.
textView.text = "텍스트 수정"    // textView의 text 값을 바꿀 수 있다.
textView.background = ContextCompat.getDrawable(this, R.drawable.circle_yellow)
                               // textView의 background에 png나 drawable xml을 넣을 수 있다.

 

List<Int>( )의 forEachIndexed문 사용

list.forEachIndexed { index, number ->
    val textView = numberTextViewList[index]
    textView.isVisible = true
    textView.text = number.toString()

    assignBackground(number, textView)
}

 

List<TextView>( )의 forEach문 사용

numberTextViewList.forEach {
    it.isVisible = false
}

 

반응형

'Programando > Android' 카테고리의 다른 글

[Android/Kotlin] Room_(5)  (0) 2021.06.17
[Android/Kotlin] SharePreferences, Thread_(4)  (0) 2021.06.13
[Android/Kotlin] Collections_(2)  (0) 2021.06.12
[Android/Kotlin] findViewById, Intent_(1)  (0) 2021.06.10
[Android/Kotlin] 문법_(0)  (0) 2021.06.08