Android 75

Data class + DiffUtil 이슈

기본적으로 코틀린의 data class는 모든 속성들에 대해 equals()와 hashCode()가 정의 되어있다. 따라서 ListAdapter의 DiffUtil에서 내부적으로 객체를 비교할때 해당 속성의 값들중 하나라도 변화가 있는 경우 (문제 상황) - EditText 에 입력하는 값 : inputText - - EditText 에 입력할때마다 onTextChanged를 받아서 리스트의 모델을 변경하는 구조 - EditText에 한글자씩 칠때마다 -> 리스트의 모델이 변경 -> inputText가 다시 적용 -> 키보드가 매번 내려감(EditText 포커스를 잃음) (해결 방법) equals() 와 hashCode()에서 inputText 를 지워야 한다. inputText 를 제외하고 오버라이딩 해..

Android 2021.03.25

Jetpack Navigation Component 활용하기

회원가입시 아래와 같은 화면을 구현해보겠습니다. 조건 1) 입력후 하단 버튼을 눌러 다음 단계로 이동 2) 이전에 입력한 필드를 선택하여 해당 단계로 이동 ( 값 초기화 ) 분석 1) 위쪽 인디케이터가 있지만 슬라이드 기능은 없음 -> ViewPager로 하지 않아도 됨 2) 입력하게 되면 아래쪽에 쌓이는 구조 -> RecyclerView로 한 경우 뷰타입을 각각 분리해야하고 텍스트도 각각 1:1로 지정해줘야함 ( RadioButton 타입도 섞여있음) 3) 각 항목을 선택하면 해당 단계로 돌아가야 함 -> 각 항목의 클릭 리스너도 각각 1:1로 지정해줘야함 -> 결국 모든 화면을 Fragment로 나누는것으로 결정 (1) 화면 및 클래스 생성 fragment_nickname.xml, fragment_p..

Android 2020.11.22

Hilt 사용법 및 Module (Binds vs Provides) 정리 및 후기

Hilt를 적용하면서 실 사용법과 Module 주입시 Binds 와 Provides 방법중 어떤것을 사용해야할지에 대해 정리하였습니다. 1. Hilt 사용법 build.gradle implementation("com.google.dagger:hilt-android:${Versions.daggerHiltAndroidVersion}") implementation("androidx.hilt:hilt-lifecycle-viewmodel:${Versions.androidHiltVersion}") kapt("com.google.dagger:hilt-android-compiler:${Versions.daggerHiltAndroidVersion}") kapt("androidx.hilt:hilt-compiler:${Ve..

Android 2020.11.15

NaverMap API 적용하기

NaverMap 장점 1. 국내용 서비스로는 구글맵보다 유리 2. 비용 무료 3. 쉬운 설치 과정 ( 카카오맵은 설치과정이 까다로움 ( lib 파일 설치등) ) 4. A/S 문의 대응이 빠르다 ( 보통 3~4시간 안에 답변을 받음 ) Mobile Dynamic Map API를 이용할 예정입니다 1. 초기 설정 네이버 공식 문서에 잘 되어있으므로 링크로 대신합니다 시작하기 · 네이버 지도 안드로이드 SDK No results matching "" navermaps.github.io 정리하자면 네이버맵을 사용하기 위해 두가지 방법이 있습니다. 1) android.support.v4.app.Fragment 를 상속한 MapFragment 2) com.naver.maps.map.MapView 객체 사용 2번 방..

Android 2020.11.08

JIRA With Intellij

JetBrains IDE(IntelliJ , Android Studio등) 사용시 JIRA 와 연동하는 방법에 대한 내용입니다. 장점 1. 해당 이슈 자동 상태 변경 ( ToDo -> In Progress -> Review ) 2. 커밋 메시지 및 브랜치 자동 생성 3. 배포시 해당 이슈 복사-붙여넣기 가능 1. JIRA 플러그인 설치 ( Jira Integration만 설치해도 가능 ) 2. API Token가져오기 기존 이메일, 비밀번호 로그인 방식은 막혔습니다. ( IntelliJ 버전이 낮은 경우엔 비밀번호로 가능 ) Jira 사이트 -> 프로필 -> 계정 설정 보안 -> API 토큰 생성 및 관리 레이블 임의 지정 3. 서버 연결 및 설정 설정 화면 [Cmd + ,] -> 위에서 생성한 API ..

Android 2020.10.19

RadioButton Button Selector (drawableEnd Not Working)

이런형태의 RadioButton을 구현한다 bg_radio_blue_checked_selector.xml 문제 : drawableEnd 에 Selector를 넣으면 체크이미지가 나타나지 않음 (체크이미지를 drawableEnd 에 직접 넣으면 나타남) 1. 버튼 속성에 Selector를 넣으면 왼쪽에 이미지가 보임 (기본 버튼 위치) android:button="@drawable/bg_radio_blue_checked_selector" 2. Button 위치 오른쪽으로 변경 android:layoutDirection="rtl"

Android 2020.10.10

Data Binding 사용시 tools가 동작하지 않는 이슈

기본 설정으로 Databinding 사용시 tools(미리보기)가 동작하지 않을때 xml 최상단에 tools와 bind 의 순서를 아래와 같이 조정. xmlns:tools="http://schemas.android.com/tools" xmlns:bind="http://schemas.android.com/tools" -> 미리보기에 홍길동이 잘 표시된다 문제 Rearranged Code(자동 정렬)를 사용하면 xmlns:bind의 순서가 바뀐다 ( b -> t 의 순서로 정렬이 바뀜) 설정 변경

Android 2020.07.04

BottomNavigationView 이벤트 연결 없이 만들기 (Google Sample)

안드로이드 스튜디오에서 BottomNavigationView 프로젝트를 만들면 기본적으로 생성되는 코드 이벤트 연결없이 쉽게 구현가능, 문제는 기존 프로젝트 연결시 100% 오류 경험하게 됨 코드 먼저 확인 새롭게 생긴 네비게이션 정의 res -> navigation -> mobile_navigation.xml res -> menu -> menu_main_nav.xml res -> layout-> activity_main.xml MainActivity val navController = findNavController(R.id.nav_host_fragment) val appBarConfiguration = AppBarConfiguration( setOf( R.id.navigation_home, R.id...

Android 2020.04.28