고객센터

도서내용문의

도서내용 문의

제목 안귀정의 안드로이드 책 관련 코드 질문 작성일 20-12-12 18:57
글쓴이 Coco 조회수 20,383

본문

이번에 업데이트 하면서 뭔가 잘 안돼서 질문드려요
그리고 처음 배우는 중에 너무 막막해서 뷰바인딩만 쓴다고 패치한다고하나..뭐라고하는데.. 그거도 적용하느라 노력중..
파일이름도 변경해서 해봤는데 아니였구요
제가볼땐 ResultActivity에 문제가 있는거 같아요 계속 런해봐도 번호가 랜덤으로 안나와서요
특히 이미지 설정이요...
제발 도움점여 ㅠㅜ
class ResultActivity : AppCompatActivity() {

//로또 1번공 이미지의 아이디를 사용, 혹시 몰라 이름 변경
private val lottoImageStartId = R.drawable.ball1

// 늦은 초기화를 이용하여 binding을 불러온다.
private lateinit var binding: ActivityResultBinding

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

// 뷰 바인딩 클래스의 인스턴스를 생성합니다.
binding = ActivityResultBinding.inflate(layoutInflater)

// 생성된 뷰를 액티비티에 표시합니다.
setContentView(binding.root)

//전달받은 결과 배열을 불러온다.
val result = intent.getIntegerArrayListExtra("result")

//전달받은 결과가 있는 경우에만 실행
result?.let {
//결과에 맞게 로또 공 이미지를 업데이트 한다.
//전달받은 결과는 정렬되어 있지않으므로 정렬해서 전달한다.
updateLottoBallImage(result.sortedBy { it })
}
}
/**
* 결과에 따라 로또 공 이미지를 업데이트한다.
*/

private fun updateLottoBallImage(result: List<Int>){
//결과의 사이즈가 6개 미만인 경우 에러가 발생할 수 있으므로 바로 리턴한다.
if(result.size < 6) return

//ball_01 이미지 부터 순서대로 아이디가 있기 때문에
//ball_01 아이디에 결과값 -1을 하면 목표로하는 이미지가 된다.
//ex) result[0] 2번 공인 경우 ball_01 에서 하나뒤에 이미지가 된다.
binding.imageView01.setImageResource(lottoImageStartId + (result[0] - 1))
binding.imageView02.setImageResource(lottoImageStartId + (result[1] - 1))
binding.imageView03.setImageResource(lottoImageStartId + (result[2] - 1))
binding.imageView04.setImageResource(lottoImageStartId + (result[3] - 1))
binding.imageView05.setImageResource(lottoImageStartId + (result[4] - 1))
binding.imageView06.setImageResource(lottoImageStartId + (result[5] - 1))
}
}