728x90

과제 14

ListAdapter

이번 챌린지반 과제로 리스트 어댑터를 이용하여 이미지검색을 구현하는 과제가있었는데 그전에 개념을 잘 몰랐기때문에 https://www.youtube.com/watch?v=zNGVicOZ2ew&t=662s 해당 영상을 보고 리스트뷰에대해 공부하게되었고, 예제도 따라했다. 영상을보고 내가 정리한 개념은 다음과 같다. DiffUtil - 두개의 데이터 셋을 받아서 그 차이를 계산해주는 클래스이다. 두 데이터 셋을 비교해서 변한부분만 파악해서 리싸이클러뷰에 반영한다. DiffUtil을 사용하기 위해선 diffutilcallback 을 상속받아서 -areItemsTheSame(): 두 객체가 동일한지 -areContentsTheSame(): 두 아이템의 내용이 동일한 데이터를 가지는지 확인 위 2개의 메서드를 사..

챌린지반과제 week5

이번주 챌린지반 과제는 Kakao API 이용 하여 이미지 검색 혹은 비디오 검색을 구현하는것이고 Bookmark 부분은 viewPager 와 tablayout만 붙이고 시간이 생각보다 오래걸려서 어떻게 코딩할지 방향만 잡아놓고 오늘은 여기까지 하는게 나을것 같다. 먼저 나는 크게 폴더 data network presentation 3개로 구분했는데 data 폴더안에는 model remote repository 3개로 또 구분하였다. 먼저 model 폴더안에는 SearchImgResponse.kt 파일이있다. remote 폴더안에는 SearchImgRemoteDatasource 인터페이스 파일이 있다. repository 폴더 안에는 SearchImgRepositoryImple 파일이있다. 그다음 net..

챌린지반과제 #2 회원가입 페이지를 MVVM 패턴으로 변경하기

이전글에 이어 이번에는 챌린지반과제 2번째를 적어보자면 기존에 구현한 자기소개페이지의 회원가입 부분을 MVVM 패턴으로 구현하는 과제이다. 이름, 아이디 , 비밀번호 를 모두 입력한 후 회원가입을 클릭하면 Toast메시지로 결과를 노출하는 과제이다. 그 후 추가 과제는 4주차내용(유효성검사)이다. 개념을 복습하고 간단한 코드를 작성한 후 과제를 수행해서 완성까지 하루가 걸리지 않았던것 같다. 나는 먼저 폴더 2개를 생성했다. 하나는 view 하나는 viewmodel 파일이다. 각각에는 view를 담당하는 Activity파일과 ViewModel 역할을 하는 파일을 담아놨다. 가장먼저 SignUpViewModel 클래스를 작성했다. ViewModel은 앱의 ui관련 데이터를 저장하고 관리하는 클래스로 ui와..

챌린지#1 MVVM 패턴

스파르타코딩클럽에서 챌린지반입성 후 1주차에 앱 아키텍쳐 관련 자료를 읽어 본 후 2주차에 회원가입 페이지를 MVVM 패턴으로 변경하는 작업을 했다. 처음하는것이라 어려울것 같은 두려움이 있었으나 튜터님께서 알려주신대로 따라가니 다행히도 구현이 잘된것 같다. 먼저 미션이 아래와 같았다. 과제를 구현하기 전 mvvm 패턴을 다시 복습했다. 먼저 아키텍쳐 종류에는 MVC MVP MVI MVVM 등이 있는데 그 중 MVC는 적용해본 경험이 있어서 머리속에 Model View Controll과의 관계에서 데이터가 어떻게 오고가는지 이미 알고 있었다. 하지만 MVVM 은 처음이어서 아키텍쳐 가이드를 읽게 되었다. 정리하자면 ui의 역할은 화면에 애플리케이션 데이터를 표시하고 사용자와 상호작용을 하며 상호작용은 예..

#앱개발입문과제-registerForActivityResult

이런 과제가 있었는데 아래와 같이 구현하도록 요구사항이 주어졌다. registerForActivityResult 을 알아보라는 hint가 있어서 이것이 안드로이드다 with 코틀린 책에서 해당 개념을 찾아보았다. registerForActivityResult를 사용하면 내가 만든 액티비티 이외에도 사용하는 컨트랙트(Contract)의 종류에 따라서 카메라, 갤러리와 같이 안드로이드가 기본적으로 제공하는 기능을 사용할 수 있다. 일반적으로 registerForActivityResult()에 정해진 컨트랙트를 담아서 호출하면 ActivityResultLauncher가 생성되는데 기본적인 흐름은 아래 그림과 같다. registerForActivityResult()에 ActivityResultContracts를..

앱개발 입문과제#2

이전글에 이어서 선택사항2를 구현해보았다. 요구사항은 다음과 같다. 나는 drawable폴더에 5개의 사진을 저장하였다. 파일이름은 one two three four five 이렇게 했다. 로그인화면에서 로그인을 눌렀을때, HomeActivity 파일(자기소개페이지)로 가게되는데, 이때 굳이 랜덤기능을 넣지 않아도 된다. 어차피 로고가 랜덤으로 보여지는것이 로그인화면에서 결과를 받아오는것이 아니기 때문이다. 그래서 HomeActivity에 다음 코드를 작성했다. 먼저 로고이미지를 배열에 담아두고 logo 변수를 메모리에 올린 후 해당 변수의 이미지 자리에 랜덤변수인 selectedLogo를 집어넣으면 된다. 결과 화면은 아래와 같고, 깃허브에 업로드 하였다. https://github.com/ellycr..

앱개발입문과제#1

스파르타 코딩클럽에서 수업을 들은 후 과제가 주어졌다. 해당 개념들을 이용해서 lv1,lv2,lv3 를 구현해보았다. 나는 lv1,2,3를 한번에 했다. 그 이유는 흐름이 끊어질까봐 힘들더라도 그렇게했다. 결과적으로 수강한 강의의 내용이 까먹지 않고 바로 복습할 수 있어서 너무 유익한 시간이었다. 먼저 파일을 다음과 같이 만들었다. 먼저 SignInActivity에서 아이디와 비밀번호를 누른 후 '로그인' 버튼을 누르면 HomeActivity로 넘어가고 SignInActivity에서 회원가입을 누르면 SignUpActivity화면으로 넘어간다. 예외 처리로는 세세한 처리는하지 않았지만, 요구사항대로 SignInActivity과 SignUpActivity 에서 모든 필드를 입력해야만 다음으로 넘어갈 수 있..

kiosk 과제 lv4-인터페이스 구현

kiosk 과제 lv3까지는 주문시 메뉴선택기능만 있었는데 lv4부터는 주문시 가격차감 및 잔액 표시 기능까지 추가하였다. lv3까지와 마찬가지로 클래스별로 기능을 나눴다. 먼저 작성한 파일은 Food.kt 파일이고, 인터페이스(바디가 없는 메서드들의 모음)로 구현했다. package com.ellycrab.kiosklv4 interface Food { //대분류 메뉴 val categoryName:String //소분류 메뉴 val foodOptions:List fun displayOptions() fun orderItem(choice:Int):Pair? } Sandwiches Wraps Salads 클래스에서는 Food클래스를 상속 받는다. package com.ellycrab.kiosklv4 cla..

과제/키오스크 2024.03.13

kiosk lv3-추상클래스 구현

kiosk lv2에서는 추상클래스를 구현하지 않았다. 그래서 lv3에서는 추상클래스 Food를 나머지 (Salads, Sandwiches , Wraps) 클래스에서 상속을 받을 수 있도록 설계했다. 먼저 Food.kt을 작성했고, 코드는 아래와 같이 작성했다. package com.ellycrab.kiosklv3 open class Food(val foodOptions:List,val foodCategory: String) { //대분류 fun displayOptions(){ println("$foodCategory 카테고리 선택:") foodOptions.forEachIndexed { index, value -> println("${index+1}.$value") } } //세부메뉴 open fun o..

과제/키오스크 2024.03.12

Calculator lv5 stack클래스 이용

Calculator lv5 실습은 우선순위를 고려한 프로그래밍을 작성하는 것이다. 괄호가 있다면 안에있는 괄호가 먼저 계산되어야하고 만약 * / 연산자가 있다면 해당 연산자가 + 나 - 보다 먼저 계산되어야한다는 조건이다. 해당 실습을 위해서 Stack이라는 클래스를 활용해야한다고 한다. Stack이란 개념은 아직 알고리즘에 익숙하지 않아서 여러 블로그글을 보다가 우연히 아래의 블로그에서 이미지가 잘 설명되어서 참고하였다. https://mailmail.tistory.com/26 [자료구조] 스택(배열 이용) - push, pop 안녕하세요. PEACE-입니다.자료구조 스터디 [세 번째] 글입니다. 1. 스택 스택이란 자료구조 중 하나입니다. 가장 최근에 들어간 데이터가 가장 먼저 나오며 흔히 후입선출(..

과제/계산기 2024.03.12
728x90