우아한테크코스

우아한테크코스/Level 2

[Data Binding] Binding Adapter

💡 Intro 영화 선택 미션부터 DataBinding을 사용하기 시작했다. 하지만 지금까지 내가 사용하고 있는 방식은 ViewBinding과 다를 것이 없다. DataBinding은 xml에 데이터를 넣어 뷰(Activity or Fragment)에서 처리하지 않아도 되는 강력한 기능을 제공하는데 이해가 부족해서 이 부분을 사용하지 못하고 있었던 것이다. 장바구니 step1&2 미션의 리뷰 중 다음과 같은 리뷰가 있었다. ProductViewHolder와 CartProductViewHolder는 거의 유사한 코드로 작성되어 있습니다. 중복 코드를 개선해보면 어떨까요? 처음에는 중복코드를 줄이기 위한 추상화를 생각했다. 어떤 방식으로 하는게 좋을까 조언을 구하다 산군을 만났고, DataBinding의 바..

우아한테크코스/Level 2

Serializable vs Parcelable

💡 Intro 미션을 진행하면서 내가 만든 객체(Class)를 다른 컴포넌트에 넘겨야하는 시점이 등장했다. 일단 먼저 마주한 것은 Intent를 통해 넘기는 것이었다. intent의 putExtra함수를 사용하면 기본적으로 사용하는 자료형은 넘겨줄 수 있지만 내가 만든 클래스의 형태는 넘길 수 없다. 그럼 어떻게 해야할까? 바로 직렬화다. 그게 뭔지, 그리고 어떻게 사용하는지 알아보자. ❓ 직렬화? 직렬화는 메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해 바이트코드 형태로 나열하는 것이다. 여기서 말하는 메모리 내에 존재하는 정보는 아마도 우리가 만든 객체가 될 것이다. 직렬화와 역직렬화는 객체의 상태를 저장하거나 전송하기 위해 사용된다. 예를 들어, 네트워크를 통해 객체를 전송하기 위해서..

우아한테크코스/Level 2

[DataBinding] 데이터 바인딩 사용하기

💡 Intro 데이터 바인딩은 Ui요소와 데이터를 프로그래밍적인 방식으로 연결하지 않고, 선언적 형식으로 결합할 수 있도록 도와주는 라이브러리다. 데이터 바인딩은 뷰 객체를 참조하는 것이 아니라 뷰 객체가 보여주는 데이터를 가진 변수를 제어한다. 즉, 뷰에 데이터를 가지고 있는 변수를 처음에 설정해주면 그 변수의 값이 보여질 것이고, 버튼을 클릭하는 등의 이벤트가 발생했을 때 뷰들을 참조하여 제어하는 것이 아니라 뷰에 설정되어 있는 변수의 값을 변경하면 그 뷰가 보여주는 데이터가 바뀌고 화면도 바뀌게 된다. 체감하기 가장 좋은 이점은 뷰 객체를 제어할 필요가 없기 때문에 findViewById() 함수를 사용하지 않아도 되고, 이 덕분에 코드가 줄어드는 부분이다. 영화 극장 선택 미션을 시작하면서 데이..

우아한테크코스/Level 2

[Code with Me] 안드로이드 Code with Me 사용하기

💡 Intro 인텔리제이에는 IDE 내에서 Code with Me를 제공해주지만 안드로이드 스튜디오에는 기본적으로 제공해주지 않더라. 그래서 아, 안드로이드에서는 사용할 수 없구나. 생각했는데, 레벨 2가 거의 다 끝나가서야 사용할 수 있다는 것을 알았다. 😅😅 게더에서 써니와 힘들게 화면공유로 페어 미션을 진행하고 있었는데, 제임스가 "안드로이드에도 Code With Me 있는데 왜 안쓰죠? 혹시 하남자?"라는 말과 함게 방법을 알려주셨다. ❗️Code With Me 설치 1. Code With Me 다운로드 Code With Me - IntelliJ IDEs Plugin | Marketplace Code With Me is a new solution for collaborative developme..

우아한테크코스/Level 2

[RecyclerView] 영화티켓예매 RecyclerView 적용

💡 Intro 영화 티켓 예매 미션이 Step3&4로 넘어오면서 ListView를 RecyclerView로 바꿔보았다. 사실 ListView보다는 RecyclerView를 많이 사용하기 때문에 RecyclerView에 대해서는 좀 더 자세하게 파헤쳐보려고 한다. ListView와 RecyclerView의 가장 큰 차이는 아래와 같다. 안드로이드 공식문서에 보면 다음과 같이 나와있다. Displays a vertically-scrollable collection of views, where each view is positioned immediately below the previous view in the list. For a more modern, flexible, and performant appro..

우아한테크코스/Level 2

[ListView] 영화티켓예매 ListView적용

💡 Intro 레벨2 첫 번째 미션으로 영화 티켓 예매 미션을 진행했다. 안드로이드에서는 보통 위와 같은 뷰를 구성하기 위해 RecyclerView를 사용한다. 그런데 미션 요구사항에 ListView를 사용하라는 프로그래밍 요구 사항이 있었고, 이를 만족하기 위해 ListView를 사용했다. (일단 ListView에 영화 목록과 광고가 함께 들어가있는 것은 배제하고, 단순하게 하나의 뷰로 ListView를 사용한다고 가정하자.) 이 요구사항을 통해 ListView를 직접 사용해보면서 어떠한 이유로 ViewHolder 패턴이 나오게 되었고, RecyclerView를 사용하게 되었는지에 대해 공부하라는 취지로 이해를 했기 때문에 "왜 ListView를 써야해"와 같은 질문은 넣어두고 요구사항을 만족하려고 노..

우아한테크코스/Level 2

[Kotlin Collections API] reduce와 fold

💡 Intro 굉장히 아쉽게도 우테코 레벨2를 시작하고 정리하는 글의 첫 주제는 안드로이드가 아니라 코틀린 내용이다. 아마 레벨1에서 다하지 못한 코틀린에 대한 내용도 종종 올라올 것 같다. reduce reduce함수가 어떻게 구현되어 있는지 구경해보자. reduce 함수는 인자로 함수 하나를 받는다. 이 함수는 어떤 accumulate 작업을 할 것인지를 명시한다. reduce 함수는 accumulate 작업 시 첫 번째 원소로 시작한다. 비어있는 컬렉션에서 reduce 를 호출하면 exception 이 발생할 수 있기 때문에 만약 reduce를 호출하는 컬렉션이 비어있을 수 있다면 reduce대신 reduceOrNull을 쓰라고 한다. 앞에서 reduce는 함수 하나를 인자로 받는다고 했고, 코틀린..

우아한테크코스/Level 1 | Mission

[우테코] 오목 - 안드로이드, DB

💡 Intro 우테코 네 번째 미션이자 레벨1 마지막 미션 오목! 미루고 미루다 이제야 글을 쓰게 됐다. 시작하기 전에 4단계로 나뉘어있어서 겁을 좀 먹었지만 걱정했던 것만큼 어렵지는 않았던 미션이다. 렌주룰에서 금수를 찾는 알고리즘을 내가 직접 구현하지 않았기 때문에 그렇게 느꼈을 수도 있다. 만약 내가 직접 구현해야 했다면 ... 시간안에 끝낼 수 있었을까? 오목 우리가 익히 알고있는 오목을 콘솔에서 할 수 있도록 구현하는 미션이다. 어려운 요구사항은 없었다. 이전에 배운 것들을 최대한 적용해보는 시간으로 생각하라고 하셨다. ❗️ 페어 프로그래밍 (Step1&2) 해시와 페어가 되었다. 해시와는 온보딩을 함께 하기도 했고 레벨1 데일리 미팅도 같은 조였기 때문에 이미 꽤나 친한 사이다. (맞지?) 덕..

Krrong
'우아한테크코스' 카테고리의 글 목록 (4 Page)