금일 알아 볼 것 오늘은 특별한 개념은 아니고 개인적으로 잊지 않고 나중에 같은 일이 생겼을 때 다시 사용하기 위해서 포스트를 쓴다. 오늘 알아 볼 것은 RecyclerView의 스크롤을 제어 할 수 있는 LinearLayoutManager의 함수인 canScrollVertically() 함수이다. canScrollVertically() 함수 요녀석은 스크롤이 가능한 상태임을 알려주는 함수이다. 이름에서 Vertically이라는 있듯이 위아래의 이벤트를 받을 수 있다. 정확히는 canScrollVertically(int direction) 형식으로 들어간다.(자바 형식) 해당 direction 부분에 -1이 들어갈 경우 위쪽, 1이 들어갈 경우 아래쪽 이벤트를 받게 된다. 그리고 리턴 값이 false라면..
2024.03.05 질문 카테고리 UI 구현 더미 데이터 작성 후 데이터 테스트 코드 정렬 및 명칭 수정 알게된 것 RecyclerView에서 LinearLayoutManager의 canScrollVertically() 메소드 override를 스크롤 제어 private fun setCategoryAdapter() { categoryAdapter = CategoryAdapter(this) val categoryManager = object : LinearLayoutManager(requireActivity(), VERTICAL, false) { override fun canScrollVertically(): Boolean { return logCheckFlag } } binding.rv.apply { l..
오늘 찾은 것! 오늘은 ScrollView를 사용하다가 에레 사항을 발생 했다. 늘 잘 사용하다가 값자기 에러 사항이 발생하였고 어떻게 보면 가장 기초적인 부분인데 본인도 모르는 사이에 잊을 수 있어 다음에 절대 잊지 않기 위해서 글을 포스트한다. 자 왜 오류가 나서 화면이 안뜰까? 정상 사진 오류 사진-1 오류 사진-2 자 어떤 이유에서 3사진 중 1개만 정상이고 나머지 둘 중에 한개는 화면이 아에 안들고 한개는 흰색 화면만 뜨게 되는걸까용? 이유는 간단합니다. 어떻게 보면 2개의 오류 모두 똑같은 이유에서 뜨는 에러입니다. 자 설명하겠습니다. 2번째 사진의 에러가 나는 이유는 DataBinding은 가질 수 있는 하위 뷰가 한개 이기 때문입니다. 코드의 줄을 잘보면 가지고 있는 하위 뷰를 Appbar..
오늘 배워 볼 것 오늘은 SavedStateHandle에 대해서 간단히 다루어 보겟당. SavedStateHandle 넌 뭐냥? 우리는 흔히 ViewModel을 사용하는 이유가 ViewModel은 UI Data를 안전하게 보관하는 방법 중 하나로 ViewModel의 생명 주기가 Activity의 생명 주기 보다 길기 때문에 화면이 회전을 해도 데이터가 보존된다. 또한 onSavedInstaceState()를 사용하지 않기 때문에 데이터를 쉽게 저장/복원 가능하면 메모리에 저장이 가능하다. 하지만 이런 ViewModel도 메모리에 저장되기 때문에 Acdroid Frameworkd에서 메모리를 회수하게 되면 저장된 값을 잃게된다. 이런 문제점을 해결하기 위해서 ViewModel에서는 SavedstateHan..
금일 알아 볼 것 Jetpack Navigation 의 데이터 전송 방식 중 하나인 safe args를 알아보려고 한다. Jetpack Navigation safe args 일단 해당 safe args를 사용하기 위해서는 build.gradle 파일과 classpath가 필요하다. [build.gradle] buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }아래 부부은 둘 중 하나만 추가한다. 자바 모듈 또는 자바와 Kotlin 혼합 모듈에 적합한 자바 언어 코드를..
2024.03.20 업무일지 문답 UI 구현 부분의 xml, 및 내부 코드 수정 Jetpack Navigation safe args 공부 및 적용 private fun goCategoryFragment(key: String, data: String){ val action = CreateQnaFragmentDirections.actionCreateQnaFragmentToCategoryFragment(data) findNavController().navigate(action) } 다음 할 일 문답 UI merge전 체크 피그마 확인 필요 주석 작성
금일 알아 볼 것 오늘은 Constraintlayout의 chain 부분을 다루어 볼려고 한다. 기본적으로 Constrainlayout의 상대적인 배치에 대해서는 다른 블로그에 많이 있으니깐 다루지 않겠다. 자 오늘도 드가즈아아아~~ Chain 이 뭔데? Constrainlayout의 연결 방식에 대해서는 누구나 기본적으로 알고 있을 것이다. 이 부분 중 Chain이라는 말도 들어본적 있을 것이다. Chain은 사용 가능한 공간 내 뷰들간의 분활되는 방식을 제어는 제약조건을 말한다. 쉽게 말하자면 2개의 View 사이에 서로의 제약조건을 걸어 서로 연결되면 Chain이 생기게 된다. 이해를 돕기위한 이미지는 아래에 있다. 위 사진 처럼 1과 2이 사이에는 체인이 생성된 것이다.(위는 신경쓰지 말것 위치를..
오늘 알아 볼 것 저번에 ViewBinding에 대해서 글을 포스트 했었는데 그 포스트 내용 중 NullPointException에 대한 이야기가 있었다. 그런 오늘 진짜 딱 맞는 사례가 생겨서 글을 추가로 포스트하게 되었다. 생각났을 때 바로바로!! 문제의 코드 [Activity 코드] class SignInActivity : AppCompatActivity() { val etId = findViewById(R.id.et_id) val etPw = findViewById(R.id.et_pw) val btnLogin = findViewById(R.id.btn_login) val btnSignin = findViewById(R.id.btn_signin) override fun onCreate(savedIn..
오늘 알아 볼 것 금일 알아 볼 것은 현재 프로젝트에서 진행하려고 하는 안드로이드 아키텍처 이다. 단간히 알아보자 Single Activity Architecture 아키텍처는 여러가지가 존재한다. 아마 제일 유명한 아키텍처를 말한다면 클린 아키텍처라고 할 수 있을 것이다. 이처럼 아키텍처를 알고 적용해서 코드를 작성하냐 안하냐는 내부 코드의 구조를 볼 때 많은 차이가 난다. 일단 우리 오늘 알아볼 Single Activity Architecture는 제목에서도 알 수 있듯이 Activity를 단일 혹은 아주 적은게 사용하고 나머지는 모두 fragment를 사용해서 구현하는 구조를 말한다. 줄여서 SAA라고 말한다. Google I/O에서는 하나 혹은 적은 갯수의 Activity만을 사용하고 나머지 화면..