[개발 일지] 필요 기능! 1. 일정 완료 시 데이터 수정하기 (isDone =True 변경) 2. 일정 삭제하기 ( Model, Recycler View 내부 데이터 삭제) 3. 변경사항 반영 먼저 ViewModel 내부에 데이터 수정과 삭제 함수를 수정했다. fun delTodoData(key:String,todo:Todo){ todoData[key]?.remove(todo) recentlyAddData.value = todoData } fun doneData(todo:Todo){ todo.isDone = !todo.isDone recentlyAddData.value = todoData } delTodoData는 날짜를 key 값으로 가지는 Data들에 접근해서 원하는 데이터를 삭제하는 기능을 한다...
[문제 상황] 코틀린으로 한 달 주기 앱을 개발 중이었다. 리싸이클러 뷰에서 item을 클릭하면 작은 팝업창이 떠서 icon을 선택할 수 있고, icon을 선택하면 다시 리싸이클러 뷰로 돌아와서 해당 icon으로 변경하는 방식의 코드를 작성 중이였다. Do not treat position as fixed; only use immediately and call holder.getAdapterPosition() to look it up later 오류가 발생했다. 직역하면 position을 고정된 값으로 생각하지 말라는 것이고 즉시 사용해야하며 홀더에서 호출하라는 뜻이었다. 개발문서에서 관련 문제를 찾아보았다. RecyclerView.ViewHolder | Android Developers Recycler..
[개발 일지] 이전에 공부한 viewmodel과 liveData를 프로젝트에 적용했다. 내가 원하는 기능은 총 3가지였다. 1. 각 calendar에서 날짜를 클릭하면 해당 일에 해당하는 뷰 나타남 2. 뷰에서 새로운 todo 추가 시 해당 일자에 데이터 추가 3. 각 일자별로 다른 데이터 ( 리싸이클러뷰) 일자별로 다른 todo Data가 적용되게 하는 것이 중요했다. key - value로 값을 관리하는 HashMap 방법을 사용하기로 결정했다. var recentlyAddData = MutableLiveData() var todoData = HashMap() var currentMonthArr = ArrayList() LiveData , LiveData를 갱신할 todoData, todoData 내..
[공부 기록] 이전에 ViewModel에 대하여 공부하고 프로젝트에 적용 했었다. 더 공부가 필요할 것 같았고, 함께 자주 사용되는 LiveData도 유용할 것 같아서 관련 자료를 추가로 공부했다. 안드로이드 framework에서는 사용자 제어에서 벗어나는 경우 (fragment 전환, 상태 변화 등) UI Controller 를 제거 혹은 재생성 하게 된다. 사용중인 데이터를 서버와 연동하지 않거나 별도로 저장하지 않으면 이런 경우에 데이터를 잃게 된다. 이전에 포스팅한 onSaveINstanceState() 메소드를 활용하는 방법도 있지만, 이 방법은 작은양의 데이터를 re-load 하는데 적합하며 bitmap 이나 배열 형식의 큰 데이터에는 사용하기 어렵다. 작성 코드는 developer 문서를 참..
[공부 기록] 안드로이드 개발을 할 때 현재 사용 중인 데이터에 대한 관리가 중요하다. 뒤로가기 버튼, 사용자가 제작한 버튼을 클릭 시 사용 중인 데이터에 대한 관리가 가능하지만. 예기치 못한 상황에서 activity나 fragment가 종료되거나 전환되는 경우에는 불가능하다. 생명주기에 따른 데이터 처리도 가능하지만 onSaveInstanceState()라는 메소드로 더 편리한 기능을 제공한다. 아래 링크는 Save State에 관한 공식 문서이다. 프래그먼트로 상태 저장 | Android 개발자 | Android Developers 프래그먼트로 상태 저장 | Android 개발자 | Android Developers 프래그먼트로 상태 저장 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장..
[개발 일지] 코틀린으로 일정 관리 앱을 개발 중이었다. 4가지 기능이 필요했다. 1. 달력의 한 날짜를 클릭하면 그와 관련된 slide view를 다른 class에서 처리하도록 하기 2. slide view의 내부 view 들을 그려주기 3. view all goals 클릭 시 view pager의 2번째 탭(1번 인덱스)로 이동, 4. add routine 클릭 시 view pager의 3번째 탭(2번 인덱스)로 이동 [Slide View를 나타낼 CalendarSlider 생성] class CalendarSlider( slideLayout: SlideLayoutCalendarBinding, private val mainActivity: MainActivity ) CalendarSlider은 2가지 ..