코틀린(Kotlin)/TIL 38

[코틀린(Kotlin)] 어댑터 뷰(AdapterView), 리스트 뷰(ListView), 그리드 뷰(GridView)

어댑터 뷰 (AdapterView) 리스트 뷰 (ListView) 그리드 뷰 (GridView) 이미지그리드 뷰 1. 어댑터뷰 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있는 기능을 제공하는 뷰 어댑터 뷰는 표시할 항목 데이터를 직접 관리하지 않고, 어댑터라는 객체로부터 공급한다 1-1. 어댑터 뷰의 종류 리스트 뷰(ListView) : 항목을 수직으로 나열시키는 방식 그리드 뷰(GridView) : 항목을 격자형태로 나열시키는 방식 1-2. 어댑터란? 데이터를 관리하며 데이터 원본과 어댑터 뷰 사이의 중계 역할 요약) 어댑터에 정의된 인터페이스를 바탕으로 필요한 정보를 요청하여 항목 뷰를 화면에 표시하거나 선택된 항목 뷰를 처리한다 1-3. 어댑터의 종류 BaseAdapter - 어댑터 클래..

[코틀린(Kotlin)] 뷰바인딩(ViewBinding)

뷰 바인딩(ViewBinding) findViewById를 대체하기 위해서 나왔다고 한다 모듈에서 사용 설정된 뷰 바인딩은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성한다 1. 우선 뷰바인딩을 쓰기 위해선 gradle 설정부터 해야 한다 android{}에 해당 코드를 추가해 준다 2. Activity의 코드를 수정해 준다 뷰바인딩을 사용할 Activity에서 해당 코드를 추가해 준다 (9, 14, 15, 17 라인) 번외) gradle, activity 코드 결과 두 방법 모두 결과는 똑같다 findViewById와 차이점 NullSafe 직접 참조를 생성하므로 유효하지 않은 뷰 ID로 인해 null 포인터 예외가 발생할 위험이 없다 Type safety 각 바인딩 클래스에 있는 필드의 ..

[코틀린(Kotlin)] 깃 에러 LF CRLF git error

팀 프로젝트 중 push 하려고 커밋하기 위해 git add .을 하니까 떴던 에러 warning: in the working copy of '.gitignore' LF Will be replaced by CRLF the next time Git touches it 항상 문제가 생기면 구글링부터 해보는데, 내가 겪은 문제를 겪어보신 분들은 항상 계신다 그리고 그걸 정리까지.. 까먹을 수 있으니 복기하도록 한다.. 보통 운영체제가 다른 개발들이 협업할 때 발생하는 에러라고 한다 유닉스 시스템에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는데, 윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed) = CRLF로 이루어진다고 한다 그래서 Git이 어떤 걸 선택할지 몰라..

[코틀린(Kotlin)] android uri is not registered 에러

레이아웃을 공부한답시고 무지성 레이아웃 생성하다가 android uri is not registered 에러가 떴다 android uri is not registered android uri is not registered 에러는 manifest 파일에서 xmlns에 해당하는 uri를 인식하지 못해서 생긴다고 한다 해결법 File → settings → languages and frameworks → schemas and DTDS 선택 후 ignoredschemas and DTDs에 에러가 뜬 uri를 추가해 주고 OK 한다 (xmlns 다 안치고 큰 따옴표("") 안에 있는 것들만 추가해 주면 된다)

[코틀린(Kotlin)] KPT 회고 방법론을 통한 팀과제 회고

KPT 회고 방법이란? Keep : 이번 프로젝트에서 진행한 과정 중 다음 프로젝트에서도 유지했으면 하는 부분 Problem : 이번 프로젝트에서 발생한 문제점을 객관적으로 판단 Try : 다음 프로젝트를 위해 해야 할 노력 + Feel : 이번 프로젝트를 통해 느낀 점 KPT를 하는 이유? 단체의 성장을 위해서 팀원 간의 불화, 애로사항은 큰 방해 요소이다. 그런 방해 요소를 가장 효율적이고 합리적으로 제거하는 방법이 바로 KPT 회고이다. [팀 프로젝트] 간단한 SNS 만들어보기 KPT Keep : 다음 프로젝트에서도 유지했으면 하는 부분 문제가 생겼을 때 지속적으로 대화를 하면서 풀어가는 과정을 유지했으면 좋겠다. 하나의 기능을 여러 명의 시점으로 보고 다양한 방법을 공유하는 것을 유지하는 것이 좋..

[코틀린(Kotlin)] 선택 정렬 알고리즘 연습

오늘도 기초문법 알고리즘 문제를 풀고 있었는데 오름차순에 관한 문제가 있었다 이 문제를 풀려면, 나는 일단 선택 정렬 알고리즘이 무엇인지부터 알아야 했다.. 주어진 숫자 배열 오름차순 정렬(선택 정렬 알고리즘 사용) - 예시) 입력 : [3, 2, 8, 5, 20] / 출력 : [2, 3, 5, 8, 20] - sort 사용 금지 - 리스트, 배열 상관없음 선택 정렬 알고리즘이란 현재 위치에 들어갈 값을 찾아 정렬하는 배열 현재 위치에 저장될 값의 크기의 대소관계에 따라 최소 선택 정렬(오름차순)과 최대 선택 정렬(내림차순)로 구분할 수 있다 기본 로직 1. 정렬되지 않은 인덱스의 맨 앞에서부터, 이를 포함한 그 이후의 배열값 중 가장 작은 값을 찾는다 2. 가장 작은 값을 찾으면, 그 값을 현재 인덱스..

[코틀린(Kotlin)] 객체 지향 프로그래밍

객체란? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)에서 객체(Object)는 상태와 행동을 가지는 개체를 말한다 상태(State)는 객체의 속성(Attribute)이며, 이는 변수를 통해 표현될 수 있다. 예를 들어, '차'라는 객체가 있다면 그 상태는 색깔, 브랜드, 현재 속도 등이 될 수 있다 행동(Behavior)은 객체가 수행하는 메서드이다 위의 '차' 객체에 대한 예를 들면, 행동은 가속, 정지, 방향전환 등이 될 수 있다 예시를 버스로 들어본다면, 버스에는 시내버스, 광역버스, 고속버스 등이 있다 공통점으로는 크게 모든 버스는 엔진을 킬 수 있다 모든 버스는 출발지와 도착지가 있다 모든 버스는 N명 이상 탑승할 수 있다 하지만 각 버스는 껍데기만 '버스'..

[코틀린(Kotlin)] 기초문법 while문과 if문 연습

오늘도 기초 문법에 대해서 공부하는데, 다른 분들의 문제를 풀던 중 주사위 문제가 있었다 두 개의 주사위를 던져서 특정한 숫자의 조합을 출력하기 - 예시) 입력 : 10 / 출력 4+6 = 10 - 입력 값이 12를 넘어가면 예외처리 - 여러 조합 중 아무거나 하나만 출력 for문 두 개를 이용한 방법의 활용 fun main() { val num = readLine()!!.toInt() for (i in 1..6){ for (j in 1..6){ if(i+j==num){ println("${i} + ${j} = ${num}") } } } } 처음엔 단순 주사위 문제인 줄 알고 for문 두 개를 이용해서 특정 입력 값(num)을 출력시켰다 우선 하나의 경우의 수만 출력하는 걸 하고 예외처리를 하기 위해 f..

[코틀린(Kotlin)] 기초문법 조건문/반복문 연습

기초문법 중에서도 조건문과 반복문의 연습을 위해서 간단한 문제 5가지를 만들어 보고 그걸 풀어보는 시간을 가졌다 또, 다른 분들의 문제도 풀어보면서 내가 어떤 문제들에 어려움을 많이 느끼는지 체크해 봤다 문제 1. 정수 num1과 num2를 입력받아 숫자를 비교해서 더 큰 수 출력하기 (단, num1 != num2) 예시) 입력 값 : 5, 10 출력 값 : 10 문제 1. 코드 class Test1 { fun test(){ val num1 = 5 val num2 = 10 if (num1>num2){ println("$num1") } else { println("$num2") } } } 문제 2. 정수들이 담긴 배열 arr에서 가장 큰 수를 출력하기 arr : [51, 25, 68, 40, 34, 55]..

[코틀린(Kotlin)] 액티비티(Activity)와 인텐트(Intent)

안드로이드의 4대 컴포넌트 안드로이드 애플리케이션은 주로 네 가지 주요 컴포넌트로 구성된다 이들은 애플리케이션의 구조를 정의하고, 안드로이드 시스템과 어떻게 상호 작용하는지를 결정한다 액티비티(Activity) - 액티비티는 사용자가 직접 상호작용하는 화면을 말한다. 예) 이메일 앱에서 이메일 목록을 보여주는 화면, 이메일 작성 화면 등이 각각 독립된 액티비티이다 - 사용자 인터페이스(UI)를 담당하며, 사용자의 입력에 반응하는 이벤트 기반 프로그래밍을 가능하게 한다 서비스(Service) - 서비스는 백그라운드에서 오랜 시간 동안 실행 되어야 하는 작업을 수행한다 예) 음악재생, 파일 다운로드 등 - 사용자가 직접적으로 인지하지 못하는, 애플리케이션의 '백스테이지'에서 일어나는 작업 브로드캐스트 리시버..