android(25)
-
room과 Rxjava2 같이 사용하기
1. ROOM이란? room 라이브러리는 SQLite 뿐만아니라 데이터베이스 액세스를 지원하는 추상화 계층을 SQLite에 지원하는 방식입니다. 이는 데이터베이스 객체를 자바나 코틀린 객체로 맵핑 시켜준다고 하여 ORM(Object Relational Mapping) 라이브러리라고도 합니다. 2. SQLite와 다른점은? 1) SQLite인 경우에는 에러를 컴파일 도중에 확인할 수 없지만 room 같은 경우 컴파일 경우에 유효성검사를 하기 때문에 에러를 검출 할 수 있습니다. 2) room은 스키마를 작성하여 DB에 대한 전반적인 구조와 제약조건을 명세하고 사용하게 됩니다. 그런데 이러한 스키마가 일부 변경될 경우, 수동적으로 DB의 쿼리를 업데이트 시킬 필요없이, 간단한 작업만으로도 쿼리를 조작할 수 ..
2020.08.21 -
ViewModel 사용하기
1. 개념 viewModel은 기본적으로 UI관리를 별도로 하기 위해서 만들어졌습니다. 기존에 UI를 관리하기 위해서는 액티비티나 프래그먼트 등 복잡한 라이프 사이클에 따라서 알맞게 처리되어져야 했기 때문에 매우 복잡했던 것이죠. 또한 화면 회전이나 비정상적인 종료로 인한 UI상 정보를 저장하고 불러오는 일 또한 관리하기 힘들었습니다. 왜냐하면 bundle에 저장할 수 있는 양은 소량의 데이터를 저장할 수 있는 용도이기 때문에 대량의 정보를 저장하고 이를 다시 복구하기에는 한계가 있었습니다. 이런 다양한 이유로 별도의 라이프사이클에 따라서 UI를 조금 더 편리하게 사용하기 위해서 viewModel이 등장하게 되었습니다. - viewModel LifeCycle 뷰모델의 라이프사이클을 보면 액티비티의 라이프..
2020.08.19 -
Retrofit2 사용해보기
레트로핏은 서버와 클라이언트 간의 데이터를 주고 받기 위해서 사용되는 하나의 도구라고 생각하면 쉽습니다. 그런데 레트로핏하면 항상 따라다니는 용어가 있죠. 바로 RESTful API입니다. 혹은 REST API에 대해서도 많이 들어 봤을 것입니다. 그럼 레트로핏은 RESTful API, REST API 둘 중 어느 표현이 더 정확한 표현일까요? 이를 알기 위해서 먼저 REST API부터 차근차근 알아보도록 하겠습니다. 1. REST API란? REST API는 기본적으로 웹 상에서 자원을 주고 받기 위해 HTTP 아키텍쳐를 사용하는 것을 의미합니다. 조금 더 풀어서 설명하면 HTTP Method인 GET, POST, PUT, DELETE 등을 이용하여 자원을 처리하는 것입니다. 이러한 기준을 따라서 만든..
2020.08.19 -
DataBinding 사용해보기
1. 개념 이름 자체에서 직관적으로 알 수 있듯이 data들을 결합시켜 주는 역할을 하는 라이브러리입니다. Databinding을 사용하지 않았을 때는 findViewById 메서드를 통해서 ViewGroup내에 존재하고 있는 위젯들을 필드값과 연결시켜 줬습니다. 하지만 한 두개의 위젯이 아닌 수십 개의 위젯이라면 해당 개수만큼의 findViewById를 사용해서 위젯들을 연결시켜줘야 하는데 이렇게 하면 정말 코드가 길어지고 복잡해 보입니다. 뿐만아니라 위젯에 달아야하는 리스너를 등록하는 문제에 있어서도 코드를 길어지게 하는데 한 몫합니다.. 이렇게 가독성이 떨어뜨리는 코드는 협업을 중요 시 하는 현재 추세에서는 매우 마이너한 방법입니다. 그래서 이런 문제들을 해결하고자 DataBinding이 나오게 되..
2020.08.17 -
Filterable로 자동검색 만들기
자동완성을 만들기위해서 전반적인 구조 1. 사용자가 검색할 수 있는 장치 -> EditText 2. 사용자가 입력할 때마다 String 값을 넘겨주는 이벤트 -> TextWatcher 3. 매 순간 넘어오는 String 값이 포함된 리스트 -> recyclerView 4. 필터링 기능 -> Filterable 위의 구조를 통해서 자동완성 기능을 순서대로 만들어 보겠습니다. 1. 검색을 위한 EditText 및 RecyclerView 생성 사용자가 검색할 수 있는 EditText와 검색된 내용을 포함하고 있는 자료들을 리스트로 보여주기위해서 xml에 EditText와 RecyclerView를 생성합니다. 2. TextWatcher 사용자가 입력한 검색어를 실시간으로 계속 얻기 위해서는 TextWatcher..
2020.08.17 -
TabLayout과 viewPager2 연결하기
tabLayout은 활용은 viewPager2와 같이 쓰일 때, 매우 효과적입니다. 슬라이드 기능 밖에 없는 viewPager2에 직관적으로 현재 page가 어떤 page인지 알 수 있으니까요! 또 viewPager2를 사용한 앱도 많습니다. 대표적으로는 네이버 웹툰이 있겠네요. 네이버 웹툰에서 월,화,수...일 이렇게 지정되어져서 보이는 부분이 바로 tabLayout입니다. 1. 의존성 추가 tabLayout을 사용하기 위해서는 의존성을 추가해 줘야합니다. 따라서 위의 방식처럼 최근 버전으로 추가해 주세요. 2. xml 추가 저번에 viewPager2를 생성하는 방법을 다룬 글에서 사용한 코드에다가, tabLayout만 추가하고 chain들만 조금 바꿔줬습니다. 3.TabLayoutMediator xm..
2020.08.12