inflearn logo
강의

講義

知識共有

ユン・ジェソンのKotlinベースのAndroidアプリ開発 Part1 - UI Programming

31強 RatringBar

리스너 함수에서 when 사용 질문

166

sm0514sm0557

投稿した質問数 2

0

안녕하세요.

리스너 함수에서 문득 궁금한게 있어 문의드립니다.

    val listener = object: RatingBar.OnRatingBarChangeListener {
        override fun onRatingChanged(ratingBar: RatingBar?, rating: Float, fromUser: Boolean) {
            when(ratingBar?.id){
                R.id.ratingBar2 -> {
                    textView.text = "Rating 2 : $rating\n"
                    if (fromUser) textView.append("사용자에 의해 설정\n")
                    else textView.append("코드에 의해 설정\n")
                }
                R.id.ratingBar3 -> {
                    textView2.text = "Rating 3 : $rating\n"
                    if (fromUser) textView2.append("사용자에 의해 설정\n")
                    else textView2.append("코드에 의해 설정\n")
                }
            }
        }
    }

위와 같이 when(ratingBar?.id) 를 사용하고 R.id.ratingBar2 이런식으로 일치하는게 있는지 확인하는데

아래와 같이 사용해도 동일하게 작동하더라고요.

val listener = object: RatingBar.OnRatingBarChangeListener {
        override fun onRatingChanged(rb: RatingBar?, rating: Float, fromUser: Boolean) {
            when(rb){
                ratingBar2 -> {
                    textView.text = "Rating 2 : $rating\n"
                    if (fromUser) textView.append("사용자에 의해 설정\n")
                    else textView.append("코드에 의해 설정\n")
                }
                ratingBar3 -> {
                    textView2.text = "Rating 3 : $rating\n"
                    if (fromUser) textView2.append("사용자에 의해 설정\n")
                    else textView2.append("코드에 의해 설정\n")
                }
            }
        }
    }

아직 kotlin에 대한 이해도가 부족해서 그런 걸 수도  있는데

when(rb)를 사용해서 객체들과 직접 비교하는게 더 간결해보이는데 R.id에서 id를 가져와 비교하는 이유가 뭔지 궁금합니다.

성능이라던가 다른 요인이 있는 걸까요?

kotlin android

回答 1

0

softcampus

위에것은 id 값을 비교하는 것이고 아래 것은 객체의 주소값을 비교하는 것입니다. 방법의 차이가 있을 뿐입니다. 다만 id는 개발자가 정해주는 것이기에 id를 더 권장하고 있습니다.

예제 코드가 빌드가 않됩니다.

0

214

1

질문 있습니다.

0

310

1

41강 AutoCompleteTextView강의 영상 중 onItemClick 이벤트 관련 질문입니다.

0

371

2

part 2의 OnActivityResult 도 deprecated 되었는데 registerForActivityResult 에 대한 강의도 추가하실 생각이 있으신가요? ㅠ

0

356

1

dp의 유무에 따라 달라지나요?

0

242

1

app- java 하위 디렉토리가 왜 이렇게 나올까요?

0

194

1

overide 함수 매개변수 질문

0

508

2

MainActivity에서 id로 코드를 작성할 수 없는 문제

0

241

1

kotlin extensions 가 더이상 지원하지 않는다고 뷰 바인딩으로 마이그레이션 하라는 메시지

0

215

2

안녕하세요 해당 강의가 언제 촬영되었는지 알 수 있을까요?

0

278

1

listener2는 이해가 되는데 listener1이 이해가 잘 안됩니다.

0

277

1

avd 오류

0

263

1

AVD terminated 오류

0

305

1

강의 자료 다운로드 할 수 있나요?

0

349

0

안드로이드 스튜디오에서 예제프로젝트 불러오기

0

531

1

Kotlin-extension 이 폐지된 다음...

0

191

1

AVD 테스트에서 Emulator가 실행되지 않습니다.

0

223

1

자동완성

0

208

1

R 에 대한 질문입니다

0

344

2

text1 자동임포트 질문입니다.

1

348

2

TextInputLayout keeps stopping

0

308

2

android studio 강의를 들으면서 dependencies에 관하여 궁금해진게 있습니다

0

213

1

자동완성 파라미터 질문

0

146

1

45. RecyclerView의 Adapter에서 viewBinding 문의

0

291

3