본문 바로가기

분류 전체보기

(107)
[TIL] Kotlin ViewModel / LiveData / Observer Pattern [오늘 배운 내용]-1- ViewModelViewModel을 왜 사용하는지구성 변경에 대한 데이터 보존Activity나 Fragment는 화면 변경 등과 같은 이유로 구성 변경이 이루어지면 onCreate부터 재생성이 된다. Activity나 Fragment가 재생성이 되어버리면 기존의 UI 상태와 Data가 손실될 수 있다. ViewModel은 Activity와 Fragment의 생명주기와 독립적으로 존재하며 더 긴 생명주기를 갖고 있어 구성 변경 시에도 데이터를 보존할 수 있다.비즈니스 로직 분리Activity나 Fragment에 비즈니스 로직과 UI가 함께 있어 유지보수가 어려우나 ViewModel을 통해 비즈니스 로직을 분리하여 단일 책임 원칙을 따르고, 코드의 가독성 및 유지보수성을 향상시킬 수.. 2023. 9. 13. 22:39
[TIL] Kotlin SharedPreference [오늘 배운 내용] -1- SharedPreference SharedPreference란? 키 - 값 데이터의 형태로 값을 저장하는 것인데, 앱 내부에 파일형식으로 저장을 통해서 앱이 꺼져도 데이터가 사라지지 않도록 보존할 수 있게 해준다. SharedPreference는 주로 프로그램의 설정 정보(사용자의 옵션 선택사항이나 프로그램의 구성정보) 등과 같이 간단한 값을 저장할 때 주로 사용한다. SharedPreference는 응용 프로그램의 고유한 정보이므로 외부에서는 읽을 수 없다. 예제 class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(saved.. 2023. 9. 12. 19:44
[TIL] Kotlin Spinner [오늘 배운 내용] -1- Spinner Spinner란 dropDown 형식으로 항목을 나타내는 ViewItem이다. Spinner 생성하기 기본적으로 만들 수 있는 Spinner를 생성하려면 가장먼저 Item을 클릭했을 시 DropDown되는 아이템들을 지정해주자 res/values 폴더 하위에 array.xml 파일을 생성해주고 해당 파일안에 DropDown 시 보여질 아이템들을 넣어주자 Array.xml home work other custom Spinner가 들어갈 main.xml 로 가서, Spinner를 만들고 Spinner를 통해 TextView의 Text를 바꿀 수 있도록 TextView도 추가해준다. main.kt Activity로 이동해서 xml에서 생성해놓은 Spinner와 adap.. 2023. 9. 11. 21:58
[TIL] Kotlin RecyclerView ViewType 나누기 [오늘 배운 내용] -1- RecyclerView ViewType 나누기 RecyclerView의 ViewType을 나누면, RecyclerView의 Item을 내가 원하는 방식으로 타입별로 나누고, 각자 다른 UI를 적용시켜줄 수 있다 적용방법 기본적인 RecyclerView는 이미 생성된 상태로 가정함 RecyclerView UI, ItemView, Data생성, DataList더미 생성 등등... 기존에 RecyclerView에 적용되는 ItemView와 다른 형식으로 Item을 띄워주고 싶으면 적용할 View XML을 추가로 만들어야 한다. 생성하는 방법은 기존에 ItemView와 동일하게 생성하면 된다 Linear ViewType의 경우 적용되는 ItemView.xml Grid ViewType의.. 2023. 9. 8. 17:35
[TIL] Fragment ResultListener로 데이터 옮기기 [오늘 배운 내용] -1- FragmentResultListener FragmentResultListener?? Android Jetpack의 Fragment API에서 제공하는 인터페이스이다. 해당 인터페이스를 통해 Fragment 간에 데이터를 전달하고 결과를 수신할 수 있다. Fragment 와 Activity와 Fragment 간에 데이터를 전달하는데, RecyclerView를 표시하고 있는 Fragment 에서 선택한 항목의 세부정보를 표시하는 다른 Fragment로 데이터를 전달하는 것과 같이 일회성 값을 전달하는 상황에 사용하기에 유용하다. Bundle을 통한 데이터 전달방식과 FragmentResultListener의 차이점 FragmentResultListener는 Fragment 간에 .. 2023. 9. 6. 22:34
[TIL] Dialog Fragment / Dialog Fragment 데이터 Fragment로 이동 [오늘 배운 내용] -1- Dialog Framgent로 Dialog 띄우기 먼저 일반 Dialog와 Dialog Fragment의 차이점을 알아보자 LifeCycle관리 DialogFragment는 Fragment의 일부로 간주되어 Fragment의 LifeCycle을 따른다. 이에따라 액티비티나 프래그먼트와 함께 동작하며, 액티비티나 프래그먼트의 LifeCycle 변경에 따라 자동으로 처리 된다. 반면 일반 Dialog는 독립적인 객체로서 액티비티나 프래그먼트와 별개로 존재하며, LifeCycle을 직접 관리해야 한다. 재사용성 DialogFragment는 재사용 가능한 컴포넌트이다. 여러 곳에서 동일한 다이얼로그를 사용할 수 있으며, 필요한 데이터 전달 및 결과 수신을 위해 인자 전달과 리스너 인터.. 2023. 9. 6. 17:51
[TIL] Fragment에서 ViewBinding 사용하기 [오늘 배운 내용] -1- Fragment에 ViewBinding 적용하기 이전에 ViewBinding을 배운 이후로는 모든 Activity에서 ViewBinding을 적용해서 학습을 진행하던 중에 Fragment에서는 ViewBinding을 onCreateView에서 적용하고, 기존에 Activity에서 적용하는 방법과는 조금 다른 방법으로 ViewBinding 을 적용해 보았는데, 왜 다른 방법으로 적용시키는 지 궁금해서 찾아보았다. Android Developer Docs 에서 권장하는 Fragment 에서의 ViewBinding 적용 코드이다. 위처럼 코드를 작성하는 이유는 Fragment에서 ViewBinding을 사용할 경우 Fragment는 View보다 오래 지속되어 Fragment의 Lif.. 2023. 9. 5. 14:10
[TIL] Fragment간의 데이터 Bundle 통하여 옮기기, Bundle을 사용하는 이유. [오늘 배운 내용] -1- Fragment간의 데이터 이동 이전에 Activity간의 데이터 이동을 RegisterForActivityResult를 통해 Intent로 데이터를 이동했으나 Fragment간의 이동에서는 Intent를 통해 데이터를 이동하지 않고 Bundle() 을 통해 데이터를 이동한다. Fragment간의 데이터 이동에서 Intent를 사용하지 않고 Bundle을 통해 이동하는 이유는 다음과 같다. Fragment의 독립성 유지 Fragment는 Activity 내에서 재사용 가능한 모듈로 설계되었는데, Intent를 사용하여 데이터를 전달하게 되면 Fragment와 Activity가 결합되어 다른 Activity로 전환할 때 코드의 재사용성과 모듈화 측면에서 제약이 생길 수 있다. 안.. 2023. 9. 3. 20:40