Kotlin

안드로이드/안드로이드

Planfit 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. StateFlow를 사용하여 Splash화면에서 알맞은 화면으로 navigation을 하거나  대기하는 역할을 수행해야 되는데 화면의 이동이 원할이 되지 않았습니다. 이전 코드@HiltViewModelclass PlanfitSplashViewModel @Inject constructor( private val getPlanfitLoginType: GetPlanfitLoginType,) : ViewModel() { private val _isLoginFlow = MutableStateFlow(LoginEvent.UnChecked) val isLoginFlow: StateFlow get() = _isLoginFlow fun checkLoginState() = viewM..

코틀린/백준

[백준] - N과 M (6)(Kotlin)

https://www.acmicpc.net/problem/15655 15655번: N과 M (6) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연..

코틀린/백준

[백준] - N과 M (5)(Kotlin)

https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제..

안드로이드/안드로이드

[Android/Kotlin] flatMapLatest 로 리팩토링

필자가 앱을 완료하고 리팩토링을 하는 중이었습니다. override fun getAllBudgetsToFlowWhenBudgetChanged(): Flow = flow { budgetDataSource.getAllBudgetsOrederByDateToFlow().collect { budgets -> val list = budgets.map { budget -> val categoryProceduresList = categoryProceduresDataSource.getAllCategoryProceduresWithBudgetNum(budget.num) val reduce = categoryProceduresList.sumOf { categoryProcedures -> categoryProcedures.pr..

안드로이드/안드로이드

[Android/UI] BackGroundTint 값 Hex값으로 설정

여러 뷰들을 사용하다 보면 background를 설정해 놓고 필터처럼 색만 바꾸고 싶을 때가 있습니다. 이럴 때 쓰이는 속성인 BackGroundTint라는 속성값이 있습니다. 필자는 해당값을 xml이아닌 코틀에서 바꿔야 되는 상황을 격었습니다. 이러한 코드들을 찾아보니 viewStateCircleItem.backgroundTintList = when (data.isAvailable) { true -> ColorStateList.valueOf(ContextCompat.getColor(this.root.context, R.color.stateGrean)) else -> ColorStateList.valueOf(ContextCompat.getColor(this.root.context, R.color.gray..

안드로이드/안드로이드

[Android/Kotlin] Room 외래키 적용

이번에 프로젝트를 하게 되면 Room을 이용해 DB를 적용해 보았습니다. 처음에는 이러한 구조로 entity들을 설계하였습니다. 이렇게 만들려고 하니 Room에서 외래키의 연결이 잘못돼있다면서 787 에러를 보여줬습니다. 위의 구조의 경우 순환 참조가 일어납니다. 모든 테이블이 연결돼있으므로 참조할 수 없게 되는 현상이 생깁니다. 그래서 해당 참조를 끊어줘야 합니다. 이관계에서는 사실상 과정테이블의 경우 budgetNum은 필요가 없습니다. 편의를 위해 만든 것일 뿐 해당 과정이 어떤 가계부에 속해있는지는 부모인 카테고리를 따라 올라가다 보면 가계부를 찾을 수 있습니다. 변환시킨 DB 구조입니다. 이 구조를 코드로 만들면 @Entity( tableName = "BUDGET", ) data class Bu..

안드로이드/안드로이드

[Android/Kotlin] 뷰 바인딩(ViewBinding)

뷰바인딩을 쓰는 이유 안드로이드 코드에서 xml에 있는 UI에 접근을 하기 위해서는 FindViewById를 이용합니다. @SuppressWarnings("TypeParameterUnusedInFormals") @Override public T findViewById(@IdRes int id) { return getDelegate().findViewById(id); } //ex) val button : Button = findViewById(R.id.button) 이 방법도 나쁘지는 않지만 일일이 findViewById() 함수로 하나하나 찾아서 가져와야 한다는 애로사항이 있었습니다. 3.5 버전까지는 개발자들이 findViewById를 사용했었지만, Butter knife라는 라이브러리나 extensi..

코틀린/문법및 라이브러리

[Kotlin] Coroutine Flow 맛보기

여러 영상들이나 문제들을 볼 때 Flow를 많이 보았습니다. 그렇지만 그 당시 Flow를 잘 몰랐기에 해당내용을 이해하기 쉽지 않았습니다. 그래서 오늘은 이 Flow를 알아볼까 합니다.  리액티브 프로그래밍은 기존의 명령형 프로그래밍과 대응되는 방식입니다.명령형 프로그래밍 : 데이터를 요청한 후 일회성으로 수신. 이경우 데이터가 필요할 때마다 결괏값을 매번 요청한다는 점에서 매우 비효율적입니다.리액티브 프로그래밍 : 구독을 하면 지속적으로 데이터를 전달하는 역할을 함.  이렇게 전달이 되는 흐름을 데이터 스트림이라고 합니다. Coroutine Flow는 코루틴 상에서 위에서 말한 리액티브 프로그래밍을 지원하기 위해 만들어진 구현체입니다. 코루틴에서 데이터 스트림을 구현하기 위해서는 Flow를 이용하여 구..

안드로이드/안드로이드

[Android/Kotlin] 리사이클러뷰(RecyclerView) 어댑터 이야기

안드로이드로 앱을 개발하다 보면 여러 어댑터를 만나게 됩니다. 어댑터(영어: adapter, adaptor)는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구를 뜻합니다. 안드로이드에서 이러한 어댑터들은 리스트뷰나 ViewPager같이 연속된 객체들을 보여줄 때 어떻게 연결한 것인지에 대해서 설정할 수 있습니다. 오늘은 리사이클러뷰의 어댑터들에 대에서 포스팅을 해볼까 합니다. 리사이클러뷰(RecyclerView)는 여러 객체들을 아이템 단위로 구성하여 화면에 출력하는 뷰그룹이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스로 표시해 주는 위젯입니다. 그렇다면 이게 리스트 뷰랑 다른 점이 뭐가 다르냐고 말할 수 있습니다. 리사이클러뷰는 이 리스트뷰의 상위..

안드로이드/안드로이드

[Android/Kotlin] ActivityResultLauncher는 무었일까요?

기존에는 startActivityForResult를 이용하여 액티비티 이동시 Result값을 받아오겠다는 것을 알려주고 onActivityResult()를 이용하여 값을 액티비티의 이동후 다 원래 액티비티로 돌아왔을 때 Result로 받아온 값들을 이용할 수 있었습니다. 그렇지만 최근에 와서는 이렇게 startActivityForResult가 deprecated 되면서 안드로이드 자체에서 쓰는 것을 권유하지 않습니다. 역시 같이 쓰이던 onActivityResult() 또한 deprecated 되었습니다. Deprecated : 이 메서드는 ActivityResultContract 및 androidx.activity.result.contract.ActivityResultContracts에서 사용할 수 있..

감자씨앗
'Kotlin' 태그의 글 목록