질문 정리 40

첫 안드로이드의 벽, RecyclerView 사용 방법

안드로이드 리싸이클러뷰(RecyclerView)란? 안드로이드 리싸이클러뷰(RecyclerView)는 안드로이드 앱에서 리스트 형태의 데이터를 효율적으로 표시하고 관리하기 위한 위젯입니다. 리싸이클러뷰는 이전에 사용되던 리스트뷰(ListView)보다 더 강력하고 유연한 기능을 제공합니다.리싸이클러뷰는 다음과 같은 주요 특징을 가지고 있습니다: 1. 재활용(View Recycling): 리싸이클러뷰는 화면에 보여지는 항목만을 생성하고 재활용하여 메모리 사용량을 최적화합니다. 스크롤 시에도 새로운 항목을 생성하는 대신 기존에 보이지 않던 항목을 재활용하여 데이터를 업데이트합니다. 2. 레이아웃 매니저(Layout Manager): 리싸이클러뷰는 레이아웃 매니저를 사용하여 항목의 배치 방식을 결정합니다. 수직..

질문 정리 2023.05.30

안드로이드 메뉴 만드는 법

최근에 시작한 간단한 메모 앱 프로젝트에서 메뉴 만들 일이 많아서 정리합니다. 안드로이드에서 메뉴를 만드는 방법은 주로 세 가지 유형이 있습니다. 컨텍스트 메뉴(Context Menu), 옵션 메뉴(Option Menu), 팝업 메뉴(Popup Menu). 이들 메뉴 유형의 주요 차이점은 다음과 같습니다. 컨텍스트 메뉴(Context Menu) 컨텍스트 메뉴는 특정 뷰에 대해 사용자가 길게 누르거나 뷰를 선택했을 때 나타나는 메뉴입니다.일반적으로 뷰와 관련된 작업을 수행하기 위해 사용됩니다. onCreateContextMenu 및 onContextItemSelected 메서드를 사용하여 컨텍스트 메뉴를 만들고 처리할 수 있습니다. 컨텍스트 메뉴는 전체 애플리케이션에 대해 일관된 메뉴를 제공하지 않으며, ..

질문 정리 2023.03.21

안드로이드 4대 컴포넌트와 Intent

이번에 브로드캐스트 리시버와 서비스에 대해서 배웠기 때문에 복습 겸 정리를 합니다. 안드로이드 4대 컴포넌트는 앱의 기본 구성 요소로, 앱의 구조와 작동 방식을 결정합니다. 각 컴포넌트는 고유한 역할을 수행하며, 시스템 및 다른 앱과 상호 작용하는 방법을 정의합니다. 1. Activity 액티비티는 사용자 인터페이스(UI)를 가지는 화면입니다. 사용자와 상호 작용하는 앱의 주요 구성 요소입니다. 일반적으로 하나의 액티비티는 하나의 화면을 나타내며, 사용자가 앱 내에서 이동하면 여러 개의 액티비티가 차례로 실행됩니다. 2. Service 서비스는 백그라운드에서 실행되는 구성 요소로, 사용자 인터페이스(UI)가 없습니다. 오랫동안 실행되어야 하는 작업이나 백그라운드 작업에 사용됩니다. 예를 들어, 음악 플레..

질문 정리 2023.03.20

코틀린 it과 this 정확히 무슨 개념일까?

항상 간편하게 사용했지만 정확히 알지 못했던 it과 this의 개념을 정리해봤습니다. it it은 람다식 내부에서 사용되는 암시적 변수입니다. 람다식에서 인자가 하나인 경우 it을 사용해서 인자를 참조할 수 있습니다. val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } 위의 예제에서 it은 numbers 리스트의 각 요소를 나타냅니다. this this는 클래스의 인스턴스를 참조하는데 사용됩니다. this를 사용하여 클래스 내부에서 멤버 변수나 멤버 함수를 참조할 수 있습니다. class Person(val name: String) { fun printName() { println(this.name) } ..

질문 정리 2023.03.15

코틀린과 지연 초기화, UninitializedPropertyAccessException 방지법

이번에 지연초기화에 대해서 배웠는데 너무 필요했던 내용들이라서 정리해두려고 합니다. lateinit 코틀린에서 지연 초기화란 객체의 초기화를 객체가 필요한 시점에 이루어지도록 늦추는 것을 의미합니다.원래는 선언하는 즉시 초기화 해야하는 것을 초기 값을 입력하지 않고, 이후에 초기화 할 수 있습니다. 따라서 객체가 다른 객체에 의존하는 경우 해당 객체들이 모두 생성되기 전까지 초기화를 지연시킬 수 있습니다. lateinit 지연 초기화를 사용하면서 주의할 점이 있습니다. 변수가 초기화 되기 전에 호출되는 경우, UninitializedPropertyAccessException이 발생할 수 있습니다. 이러한 문제를 방지하기 위해서 호출하기 전에 초기화가 되었는지 체크하는 것이 좋습니다. class MyCla..

질문 정리 2023.03.15

editText에 setText로 값을 넣어야하는 이유가 뭘까?

최근 안드로이드 앱 개발을 하다가 궁금한 것이 생겨서 정리했습니다. TextView에 String 값을 대입할 때는 binding.textView.text = "String"을 넣고, EditText에 String 값을 대입할 때는 binding.editText.setText("String")의 형식으로 넣고 있었습니다. 평소 너무 당연하게 사용하고 있었지만, 왜 이렇게 다른 방식을 사용하는 지는 모르고 있었습니다. TextView와 같은 방식으로 EditTextView에 대입을 하려고 하면 오류가 발생합니다. binding.editText.text = "String" binding.editText.text는 Editable 객체이고, "String"은 문자열(String) 타입입니다. 따라서, 두 개의..

질문 정리 2023.03.15

Toast.makeText()를 사용할 때, context를 달라고 하면 this를 입력하는 이유는 뭘까?

안드로이드 스튜디오를 사용하면서 Toast를 사용하게 될 일이 종종 있습니다. 여기서 context는 Toast가 표시될 Context, text는 Toast에 표시될 text, duration은 Toast가 표시될 시간을 의미합니다.따라서 아래와 같은 형식으로 사용할 수 있습니다. Toast.makeText(getApplicationContext(), "Hello, world!", Toast.LENGTH_SHORT).show(); 이 코드는 getAppicationContext()를 사용하여 현재 애플리케이션의 컨텍스트를 가져오고, "Hello, world!"라는 text를 짧게 표시합니다. 하지만 우리는 아래와 같은 형식으로 더 많이 사용합니다. Toast.makeText(this, "Hello, w..

질문 정리 2023.03.14

Object와 Any, void와 Unit

자바 Object와 코틀린 Any 코틀린의 Any 클래스는 자바의 Object 클래스와 기능이 유사합니다. 둘 다 모든 클래스의 기본 클래스이며, 모든 객체의 상위 클래스입니다. 하지만 Any 클래스는 자바의 Object 클래스보다 더 많은 기능을 제공합니다. 예를 들어, 코틀린의 Any 클래스는 다음과 같은 기능을 제공합니다. equals() : 메서드를 오버라이딩하여 객체의 값 비교를 할 수 있습니다. hashCode() : 메서드를 오버라이딩하여 객체의 해시 코드를 계산할 수 있습니다. toString() : 메서드를 오버라이딩하여 객체를 문자열로 표현할 수 있습니다. 따라서, 코틀린에서 Any 클래스를 사용하여 객체를 정의하면 equals(), hashCode(), toString() 등의 메서드..

질문 정리 2023.03.14

코틀린 Number란 무엇일까?

Number란? 코틀린에서 Number는 숫자 타입의 공통 기능을 제공하는 추상 클래스입니다. 코틀린에서 제공하는 숫자 타입은 다음과 같습니다. Byte: 8비트 부호 있는 정수 타입 Short: 16비트 부호 있는 정수 타입 Int: 32비트 부호 있는 정수 타입 Long: 64비트 부호 있는 정수 타입 Float: 32비트 IEEE 754 부동 소수점 타입 Double: 64비트 IEEE 754 부동 소수점 타입 이러한 숫자 타입은 Number 클래스를 상속하고 있으므로, 공통적으로 toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble() 등의 메서드를 가지고 있습니다. 이 메서드들은 해당 숫자 타입으로 변환하는 기능을 제공합니다. 또한, 코틀린에..

질문 정리 2023.03.14

왜 List<String> list = new ArrayList<>()라고 쓸까??

= 업캐스팅을 하는 이유 List list = new ArrayList(); ArrayList list = new ArrayList(); List와 ArrayList는 다르다. public interface List extends Collection public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable List는 Collection을 상속(extends) 받은 interface이고, ArrayList는 List를 상속(implements) 받은 Class이다. 기본적으로 우리가 자바에서 할당을 하는 방법이다. ArrayList list = new ArrayList(); 우리는 보통 ..

질문 정리 2023.02.16