ViewModel의 기본적인 사용 목적은 UI Controller에서 보여줄 데이터를 관리하는 것이다. 일반적으로 ViewModel에 데이터를 LiveData로 관리하고 UI Controller가 그 데이터를 Observing 하는 구조로 만든다. 여기서 단일 데이터에 LiveData를 사용하면 문제가 되지 않지만 리스트에 LiveData를 단일 데이터처럼 적용하려고 하면 제대로 동작하지 않는다. 즉, 리스트 내부의 아이템 추가, 삭제와 같은 변경 사항이 일어나도 Observer에 등록된 콜백이 호출되지 않는다는 것이다. 위 그림의 View와 ViewModel의 관계에서 어떻게 리스트 데이터를 LiveData로 관리해서 내부 아이템의 변경사항까지 Observing 하도록 만들 수 있을까? LiveData..
안드로이드 프로젝트를 하면서 API 통신이 필요할 때 일반적으로 Retrofit 라이브러리를 사용하는데, 그 이유는 Retrofit의 응답 속도가 빠르고 구현 방법이 간단하기 때문이다. 이번 포스팅에서는 이렇게 많이 사용되는 Retrofit의 장점과 사용법에 대해 알아보려고 한다. Retrofit2 특징 Retrofit2는 Square사에서 만든 네트워킹 라이브러리로, 오래 전에 Retrofit이라는 라이브러리를 출시한 뒤 기존 라이브러리의 문제점을 개선해 현재의 Retrofit2가 만들어졌다. Retrofit2는 Retrofit의 업그레이드 된 버전이기 때문에 일반적으로 1과 2를 구분짓지 않고 Retrofit이라고 통용된다. 그렇기 때문에 포스팅 중에 Retrofit이라고 하는 것은 모두 Retrof..
이번 포스팅에서는 앱 개발을 하면서 한 번씩은 꼭 필요한 properties에서 값을 읽어오는 방법을 정리하려고 한다. 사실 이 기능이 필요할 때 종종 방법을 잊어버리기 때문에 검색하지 않고 한 번에 찾기 위함이다.. 개발을 하면서 API key와 같이 외부로 유출되면 안되는 정보를 코드에 넣어야 하는 경우가 있다. 특히 이런 코드를 GitHub에 올리려고 하면 곤란해지는데 이런 경우에는 그 정보를 직접 코드에 넣는것 보다는 따로 .properties 파일로 빼서 사용하면 좋다. 예를 들어 apikey.properties 라는 파일을 만들어서 프로젝트 루트 디렉토리에 넣어두고 .gitignore 파일에 추가하면 key 값이 외부에 노출될 걱정도 없고, key 값들을 하나의 파일에서 관리할 수 있어 좋다...
강의 초반에 여러 아이템 중에 하나를 선택하기 위한 선택 위젯의 개념이 나왔었다. 선택 위젯의 종류로 ListView, GridView, Spinner 등이 있고, 그 중에 '[부스트코스 PJ2 정리노트] 이벤트와 리스트 뷰'에서 ListView의 사용법에 대해 정리한 적 있다. 하지만 RecyclerView의 많은 장점 때문에 ListView보다는 RecyclerView를 많이 사용한다. RecyclerView의 장점은 다음과 같다. ListView는 상하 스크롤만 지원하지만 RecyclerView는 상하 스크롤과 좌우 스크롤을 모두 지원한다. - 이는 처음 만들어질 때부터 레이아웃을 유연하게 구성할 때 있도록 설계되었기 때문이다. 각각의 아이템이 화면에 보이는 과정에서 뷰홀더(ViewHolder)를 ..
7장에서는 안드로이드에서 카메라로 사진을 찍고, 음악과 동영상을 재생하고, 사진을 보고 음성 녹음을 하는 등의 멀티미디어 기능에 대해 설명한다. 이번 포스팅에서는 이런 멀티미디어 기능 중에 가장 중요한 사진을 찍는 기능에 대해서 알아보려고 한다. [카메라로 사진찍기] 카메라로 사진찍는 방법은 대표적으로 두 가지가 있다. 첫 번째로는 Intent를 이용해 내장되어 있는 카메라 앱을 띄우는 방법으로 이 방법을 사용했을 떄는 별다른 카메라 설정을 해 줄 필요가 없다는 장점이 있다. 두 번째로는 Surface view 라이브러리를 이용해 카메라 미리보기 화면을 자신의 앱 안에 넣는 것이다. 이 방법은 카메라 위에 증강현실을 표현할 아이콘이나 그래픽 등을 보여줄 수 있는 등 마음대로 변형을 할 수 있다는 장점이 ..
6장에서는 안드로이드 단말 내에 데이터베이스를 사용해서 정보를 저장하고 이를 불러와서 사용하는 방법에 대해 나온다. 이번 포스팅에서는 이러한 데이터베이스 기능들을 정리하려고 한다. [SQLite] 안드로이드에서 사용하는 데이터베이스는 SQLite로, RDB이기 때문에 SQL을 이용해 데이터를 다룬다. 단말에서 사용하는 데이터베이스이기 때문에 임베디드 데이터베이스 라고도 부른다. RDB 테이블은 다음과 같은 구조를 가지고 있다. 세로 줄을 속성(Attribute)라고 부르고, 가로 줄을 튜플(Tuple)이라고 부른다. 속성과 튜플로 이루어진 전체를 Relation이라고 부른다. SQLite의 특징은 다음과 같다. SQLite는 다른 RDB와 다르게 하나의 파일로 구성된다. (확장자로 .db를 사용.) 모바..
5장에서는 네트워킹에 대한 내용이 나오는데, 네트워킹은 인터넷에 연결되어 있는 원격지의 서버 또는 단말과 통신해서 데이터를 주고받는 동작들을 포함한다. 이번 포스팅에서는 이런 네트워킹에 대한 내용을 정리하려고 한다. 뒤에 나올 내용을 다루기에 앞서 네트워크 연결 방식에 대해 짚고 넘어가려고 한다. 먼저 원격지의 서버를 연결하는 가장 단순한 방식은 클라이언트와 서버가 일대일로 연결하는 '2-tier C/S(Client/Server)' 방식이다. 이 연결 방식을 가장 많이 사용하며, 대부분 클라이언트가 서버에 연결 되어 데이터를 요청하고 응답받는 단순한 개념으로 이해할 수 있다. 여기서 서버를 응용 서버와 데이터 서버로 구성하면 3-tier C/S 방식이 되는데, 이 연결 방식을 사용하면 데이터베이스를 분리..
5장에서는 서버와 클라이언트 모델로 네트워킹을 통해 서버에서 정보를 받아와서 클라이언트에서 보여주는 내용에 대해 다룬다. 이번 포스팅에서는 이런 네트워킹을 알아보기 전에 반드시 알아야 하는 스레드와 핸들러라는 개념을 먼저 정리해 보려고 한다. [스레드와 핸들러] 스레드 사용하기 어떤 프로그램을 만들 때 작업 동시 수행은 굉장히 중요한 요소이다. 작업이 동시에 수행되지 않는다면 처리 시간이 긴 작업을 끝낼 때 까지 그 다음 작업들이 계속해서 미뤄지면서 전체적인 처리 속도가 느려질 것이다. 작업을 동시에 수행하는 것을 멀티 스레드(Multi Thread) 방식이라고 하고, 동시 수행이 가능한 작업 단위를 스레드(Thread)라고 한다. 멀티 스레드 방식은 같은 프로세스 안에 들어있어 메모리 리소스를 공유하기..
- Total
- Today
- Yesterday
- RecyclerView
- python3
- kotlin
- pecs
- SOCKET
- SQLiteOpenHelper
- 내용제공자
- 위험권한
- AsyncListDiffer
- AndroidStudio
- 부스트코스
- GitHub
- SQL
- 안드로이드
- Algorithm
- Java
- SQL Server
- ViewHolder
- 알고리즘
- 파이썬
- Android
- covariance
- 프로그래머스
- gson
- personal access token
- RuntimeException
- Python
- MSSQL
- SQLD
- DiffUtil
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |