미니 퀴즈에 대한 코드 > QnA

본문 바로가기
사이트 내 전체검색

QnA

안드로이드 미니 퀴즈에 대한 코드

페이지 정보

profile_image
작성자 jsu0638
댓글 8건 조회 76회 작성일 21-05-04 13:15

본문

댓글목록

profile_image

Scott님의 댓글

Scott 작성일

깃헙이 아래 주소가 맞으실까요?

https://github.com/javafa/thisiskotlin/tree/master/MiniQuiz4_2_2

테스트 결과 코드는 체크 한것들이 모두 나타나도록 동작합니다.

profile_image

jsu0638님의 댓글의 댓글

jsu0638 작성일

네 그 곳에서 봤습니다.
그 코드를 실행하면 텍스트 뷰에
사과를 선택하면 "사과가 선택되었습니다.", 오렌지를 선택하면 "오렌지가 선택되었습니다." 라고 뜨는데요.
책에 있는 문제 정의는 사과를 선택하면 "사과가 선택되었습니다., 오렌지도 선택하면 "사과와 오렌지가 선택되었습니다."라고 떠야합니다.

profile_image

Scott님의 댓글의 댓글

Scott 작성일

혹시 본인이 작성하신 MainActivity 코드 전체 올려 주실 수 있으세요?

profile_image

jsu0638님의 댓글의 댓글

jsu0638 작성일

저는 짜다가 모르겠어서 깃 허브를 들어갔던 거였습니다.
깃허브에 있는 코드처럼은 할 수 있는데 "~와 ~이 선택되었습니다" 이런 식으로를 못하겠어서요...

profile_image

Scott님의 댓글의 댓글

Scott 작성일

중간에 "와" 가 빠진거 때문이시라면 다음과 같이 하시면 됩니다.

과일이 모두 받침이 없기 때문에,
만약 앞에서 선택된 것이 있다면
앞에서 선택된 과일 다음에 "와" 를 먼저 붙인 후에
해당 과일이름을 붙이면 됩니다.

    fun printCheckedItems(){
        var result = ""
        if(apple) result = " 사과"

        if(banana) {
            if(result.isNotEmpty()) result += "와"
            result += " 바나나"
        }

        if(orange) {
            if(result.isNotEmpty()) result += "와"
            result += " 오렌지"
        }

        binding.textView.text = "${result}가 선택되었습니다."
    }

profile_image

jsu0638님의 댓글의 댓글

jsu0638 작성일

class MainActivity : AppCompatActivity() {

val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

var apple = false
var banana = false
var orange = false

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)

binding.radioButton1.setOnCheckedChangeListener { buttonView, isChecked ->
apple = isChecked
printCheckedItems()
}
binding.radioButton2.setOnCheckedChangeListener { buttonView, isChecked ->
banana = isChecked
printCheckedItems()
}
binding.radioButton3.setOnCheckedChangeListener { buttonView, isChecked ->
orange = isChecked
printCheckedItems()
}
}

fun printCheckedItems() {
var result = ""
if (apple) result = " 사과"

if (banana) {
if (result.isNotEmpty()) result += "와"
result += " 바나나"
}
if (orange) {
if (result.isNotEmpty()) result += "와"
result += " 오렌지"
}
binding.textView.text = "${result}가 선택되었습니다."
}
}

이렇게 하는 거 아닌가요?? 그래도 같은 결과가 나오네요...

profile_image

Scott님의 댓글

Scott 작성일

또 다른 방법으로는 다음과 같이

1. result를 컬렉션으로 선언한 다음에

var result = mutableListOf<String>()

2. 선택 된것들이 있으면 모두 컬렉션에 담습니다.

if(apple) result.add("사과")
if(banana) result.add("바나나")
if(orange) result.add("오렌지")

3. 컬렉션에 들어가 있는 각각의 값을 joinToString() 메서드를 사용해서 "와 "로 묶어서 하나의 문자열로 만들어서 사용할 수 있습니다.
if(result.isNotEmpty()) {
    val temp = result.joinToString("와 ")
    binding.textView.text = "${temp}가 선택되었습니다."
}

profile_image

Scott님의 댓글

Scott 작성일

아.. 캐쉬 때문일수도 있으니까 설치된 앱을 지우고 다시 Run 을 돌려보세요

회원로그인

회원가입

Site info.

Team Flow9
Address : 10, Gukjegeumyung-ro, Yeongdeungpo-gu, Seoul, Republic of Korea
Contact : flow9.net@gmail.com

접속자집계

오늘
173
어제
346
최대
549
전체
102,762
Copyright © flow9.net All rights reserved.