하루에 0.01%라도 성장하자
반응형

kotlin 8

Livedata setValue와 postValue 그리고 Cannot invoke setValue on a background thread

안드로이드를 개발할 때 요즘 많이들 livedata를 사용한다. state관리에도 용이하고 UI를 즉각 반영할 때도 좋다 livedata를 다루는 여러 가지 기술도 있지만 오늘은 setValue postValue 에 대한 기록을 남기려고 한다. 내가 겪은 코드는 아래와 같다 Cannot invoke setValue on a background thread 백그라운드 쓰레드에서 setVlaue를 호출 할 수 없습니다 :( setValue setValue는 MainThread에서 동작하는 방식이다. // viewModel private val _textStr: MutableLiveData = MutableLiveData() val textStr: LiveData get() = _textStr ... _tex..

Develop/Android 2022.11.10 (1)

Kotlin 을 이용한 동적 setBackgroundColor

이번에 별로 어렵지도 않은 걸로 혼자 삽질한 케이스가 발생해서 기록 차원에서 남겨두려고 한다. ( 이러지 말자 ㅠㅠ ) 기본적인 앱 구조는 healder를 공통으로 만들어 놓고 이 header를 각 레이아웃에 include 해서 사용하려고 한다. 이때 include하는 activity 별로 header의 backgroundColor 값을 변경해줘야 하는 상황이었다. ( 어렵지 않은데 ?) 평소처럼 진행하였다. 대충 바인딩 하는 코드 .... binding.headerLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.white)) 그런데 변경이 안되는것이다!! 아무리 해도 변경이 안돼... 바인딩이 잘못되었나 해서 findViewById로도 별..

Develop/Android 2022.07.06

Android - DataClass, DataBinding

DataClass 와 DataBinding을 이용한 MVVM 패턴 구현하기 첫번째 스텝이다. 먼저 DataBinding을 진행하려면 아래와 같은 설정을 해준다. 설정 project 단위의 gradle에 아래와 같은 설정을 해준다. plugins { id 'kotlin-kapt' } android { .... dataBinding{ enabled = true } } DataClass 만들기 User라는 DataClass를 만들어서 Model 형태로 사용한다. data class User( val firstName : String, val lastName : String } layout.xml 에 DataBinding 진행하기 xml 파일로 되어있는 layout 파일에 dataBinding을 해준다. 여기서..

Develop/Android 2021.06.30

Android - Data Binding

Kotlin 을 이용한 Data Binding을 위한 셋팅 데이터 바인딩은 넓은 호환성을 위해 Android 2.1 이상(API level 7)에서 사용할 수 있도록 되어 있음. ( 엄청난 호환성.. ) 1. 세팅 plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } .... dataBinding{ enabled = true } Module level의 Gradle에 위와 같은 설정을 해준다. MainActivity에 버튼을 하나 만들어서 로그를 출력하는 형태로 개발 activity_main.xml 의 경우 기본 설정되는 layout을 감싸는 형태로 layout을 써줘야 한다. 말이 이상한데 아래 코드를 보고 확인 위 ..

Develop/Android 2021.04.08

Android - 날짜가 변경될 때 발생하는 이벤트.

이번 프로젝트에서 날짜가 변경될 때 이벤트를 전달 받아 특정한 코드를 실행시켜야 하는 업무가 주어졌다. 날짜가 변경되었을 때 발생하는 이벤트는 아래와 같다. android:name="{.receiverClassName}" android:enabled="true" android:exported="true" > receiverClassName 영역에 상속받은 receiver를 등록해주거나, 아니면 생성해서 registerReceiver를 이용해 등록해주면 된다. 여기서 주목해야 하는 점은 이부분인데, 이 action이 device 기반으로 날짜가 변경되면 발생하는 이벤트이며, receiver에 이것을 등록해주므로써 이 이벤트를 받아 특정한 코드를 실행 시킬 수 있다. 다만! 제일 크리티컬한 이슈는 수동으로 ..

Develop/Android 2020.12.15

모바일 앱 개발 챌린지 참여 후기 (feat. 프로그래머스)

이번에 프로그래머스에서 개최(?)한 모바일 앱 개발 챌린지가 있어서 참여했다. 어려운 내용은 아니었는데, 아직 생소한( 현업에서 사용하지 않은 ) Kotlin으로 개발하는 것이 필수적이었고, 이러한 챌린지 참여는 처음하기에 기대도 되고 설레기도 했다. 이번 앱 개발 챌린지에서 제공한 내용은 이렇다. 1. RESTful API를 제공하는 서버 2. API 명세서 3. icon을 다운받을 수 있는 외부 주소 4. UI 디자인을 확인할 수 있는 Zeplin 5. 앱 개발 챌린지에서 원하는 완성본을 확인하는 Proto Pie 새로운 경험이었고 재밌게 했는데 조금 불편했던것이 하나 있는데 바로 Zeplin에 제공된 UI가 iOS 기준이었다는 것이다. 분명 지원을 Android 부분으로 지원하였는데, iOS로 UI..

Story 2019.12.20

Kotlin ) 코틀린 기초 Part#2 - 배열 ( Array ), 제어문 ( if, for, when )

배열 생성 val arr : Array = arrayOf(1,2,3,4,5); val arr2 = arrayOf(1,2,3,4,5); // Int 생략 arr[0] = 10; // (10,2,3,4,5); if if를 식처럼 쓸 수 있다. val number = if(a > b ) a else b when swtich 문처럼 사용하는 경우 val x = 1 when(x){ 1 -> println("x == 1") // 값 하나 2, 3 -> println("x == 2 or x == 3") // 여러 값이 콤마로 in 4..7 -> println("4~7") // in 연산자로 범위 지정 !in 8..10 -> println("8~10이 아닌경우 ) else ->{ println("x는 1이나 2가 아님..

Develop/Android 2019.06.12

Kotlin ) 코틀린 기초 Part#1 - 변수, 상수, 자료형

코틀린을 배우면서 가장 기초적인 부분을 정리한다. 변수, 상수 변수 var로 선언 var a : Int = 10; var a = 10 둘다 가능 자료형을 선언하지 않아도 형추론을 지원하기 때문에 괜찮음 상수 val로 선언 val b : Int = 20; 상수이기 때문에 초기화 후 변경 못함. java의 final과 같음 함수 선언 func printTest(str : String) : Unit{ print(str); } printTest("TEST"); Unit java 의 void와 같음. 반환값이 없는 경우 생략 가능 func printTest(str : String) { print(str); } printTest("TEST"); 자료형 숫자 var a = 10; // Int var a = 10L; ..

Develop/Android 2019.06.11
반응형