본문 바로가기
5번 프로그래밍/Kotlin, 안드로이드 스튜디오

안드로이드 스튜디오 - Udacity 챕터2, 2장 28절 Exercise: Add Aligned Boxes with Click Handlers

by 하늘나는 곰 2021. 6. 10.

전체적으로 미리 말을 하지만 진행이 되지 않는다.

 

동영상 수업버전에서는 가능한지 모르겟으나

 

안드로이드 스튜디오 최신판에서는 기능이 바뀐 것으로 추측된다.

 

 

문제가 되는 부분이 이부분 동영상 강의 49초 부분이다.

 

타이핑 하는 데는 크게 문제가 없으나 listof( ~ ) 부분이 id 참조가 되지 않는다.

 

『 List<View> = list Of() Unresolved reference 』 에러를 출력하면서 진행이 되지 않습니다.

 

 

동영상 대로 전부다 작성하게 되면 위와 같이 에러가 뜨게된다.

 

 

스택오버플로우나 다른 게시판에 위와 같은 현상 등으로 

 

많은 사람들이 진행이 멈춘 것이 보인다.

 

문제는 명확하게 답이 달린 것은없다.

 

질문을 올려놓은 사람들도 자신이 초보자고 구글 강의를 통해서 진행 중이라는

말을 해놓으면 좋을텐데 답답하다.

 

아무튼 많은 답변들이 『 안드로이드 스튜디오 개발자 문서』 를 보고 따라하라고하는데

 

도저히 알아 들을 수가 없다.

 

 

https://developer.android.com/topic/libraries/view-binding#usage

 

뷰 결합  |  Android 개발자  |  Android Developers

뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 클래스의

developer.android.com

 

설명을 보아하니 바이딩클래스 라는 것을 이용하여 전체적으로

 

id 참조를 할 수 있게 진행을 하는 것 같다.

 

설명대로 build.gradle에서


        viewBinding
{
            enabled
= true
 

 

내용을 붙어 넣기를해준다.

 

그 다음 진행되는 뷰 결합 설명은 여기까지가 딱 한계였다.

 

 

따라서 작성을 하면서 ActivitiyMainBindind 까지 바인딩 클래스라는 것을 만든 것이 한계였다.

 

그다음 써먹지를 못하곘다.

 

설명으로는 아주 가볍게 『 참조할 수 있습니다. 』라고 하는데

 

viewmodel 이라는게 튀어나오면서 갑자기 뭐가 뭔지 이해를 못하겠다.

 

id 참조를 해야 하단부에 작성 되었는 클릭을 하면서 아이디를 참조하는데,

 

id 리스트를 도저히 가지고 오는 것을 할 줄 모르겠다.


 

16시간 넘게 다른 답이 없는가 찾아 보았으나

 

지금 새로운 시스템인

 

뷰 결합으로 솔류션같은 장문으로 답이된 코드 소스를 찹을 수가 없다.

 

시대가 지났으니 저 개발자 문서를 참조하라고 조언만 해주고 있다.

 

결국은 과거에 썼던 방식으로 일단 진도를 나가봐야한다.

 

 

스텍오버플로우 답변 중 하나로 findViewById 를 써보라고 하고 있다.

 

개발자는 이 기능을 쓰지 않게 하기 위해서 업데이트를 하게 한 것인데,

 

초보자인 우리는 어쩔 수 가 없다.

 

일단 모범 답안이 있는 것으로 처음 실행을 시키는게 문제인 것 같다.

 

 

스텍 오버플로우의 답변대로 작성을 하게 되면이렇게 된다.

 

private fun setListeners() {

val view1 : View = findViewById(R.id.box_one_text)
val view2 : View = findViewById(R.id.box_two_text)
val view3 : View = findViewById(R.id.box_three_text)
val view4 : View = findViewById(R.id.box_four_text)
val view5 : View = findViewById(R.id.box_five_text)
val view6 : View = findViewById(R.id.constranent_layout)

val clickableViews : List<View> =
listOf(view1,view2,view3, view4, view5, view6)


for (item in clickableViews) {
item.setOnClickListener { makeColored(it) }
}

}

 

어떻게든 구버젼 방법을 쓰지 않고 신버젼 방법을 찾으려고했으나

 

시간이 너무 많이 소모해 버렸다.

 

인강을 들을 수 있는 시간이 한정 되어있느니 찾아서 공부는 나중에 하고

 

『 지금 하고 있는 것이 맞는 것인지 』, 『 내가 하고 있는게 실행이 되는지』부터

 

확인을 하는 것이 중요할 것 같다. 

 

일단 넘어가기 위해 그대로 작성을 해보자.

 

한달 12만원 돈은 너무 비싼게 맞다.

 

강의 글 하단 부에 연습문제에 대한 정답지를 깃허브, 압축 파일로 주는 것이 있으나.

 

읽어 보아도 동영상 강의와 같기 때문에

 

지금 나의 검색능력으로는 findViewById 답변의 솔루션이 한계인 듯하다.

 

궁극적으로는 영상과 같이 실행이 되면 되는 것이다.

 

오타가 많을 수 있기 때문에 복사 붙여 넣기 보다는

 

직접 타이핑 방식을 추천하겠습니다.

 

점점 숙제가 늘어 나고 있다.

댓글