Android
-
Single Live EventAndroid 2024. 6. 9. 21:00
뷰모델의 live data 를 처음 1회만 observe 하는 방법 참고 링크 https://kkong-93.tistory.com/87 Single Live Event란 + 사용방법ViewModel과 View 간의 통신을 위한 하나의 방법이다. LiveData를 이용한 Single Live Event는 LiveData의 장점을 유지하면서 화면 회전같은 불필요한 환경에서 발생하는 문제를 해결할 수 있다. 핵심은 특정kkong-93.tistory.com 공식적으로 나온 코드가 아니라 직접 코드를 추가해야 한다. 사용하려는 이유? 이런 식으로 테스트 결과가 뷰에 보여질 때, 상단 텍스트는 매번 검사에 따라 바뀌어야 하지만버튼의 경우에는 처음 1회만 다시 검사하기로 바꾸면 된다. 따라서 버튼의 텍스트는 매번 ..
-
팀플 금연테스트 화면 - ViewPager2Android 2024. 5. 31. 21:30
해당 화면을 구현하면서 겪은 트러블 슈팅이 있다.로그캣 오류java.lang.NullPointerException 원인 코드 및 이유// QuestionFragmentViewPagerFragment.moveToNextQuestionPage()// ViewPagerFragmentprivate var _binding: FragmentViewPagerBinding? = nullprivate val binding get() = _binding!! fun moveToNextQuestionPage() = with(binding) { if(viewpager.currentItem == 7) { val fragment = ResultFragment() parent..
-
팀 프로젝트 트러블 슈팅 - suspend fun, viewModelScope.launchAndroid 2024. 5. 10. 21:42
로그캣 오류 코드java.lang.IllegalArgumentException: Unable to create call adapter for class com.example.ssg_tube.data.model.SearchResponse for method YouTubeAPI.videoSearch 문제사항 및 코드videoSearch 의 요청 값으로 response data를 불러오지 못한다.@GET("search") suspend fun videoSearch( // 필수 매개변수 @Query("part") part: String, // part 매개변수는 API 응답이 포함하는 search 리소스 속성 하나 이상의 쉼표로 구분된 목록을 지정합니다. 매개변수 값을 snippe..
-
개인 과제 트러블 슈팅 - 인터페이스 변수 초기화Android 2024. 5. 9. 21:52
문제 상황어댑터에서 정의한 인터페이스 변수의 함수가 구현체인 프래그먼트에서 실행되지 않는다.로그캣도 찍어봤을때, isWork 가 안찍히는 것을 보아 값이 넘어가지 않은걸 확인할 수 있었다. 기존 코드// 어댑터var itemClickRemove: StoreItemDeleteListener? = nullitemView.setOnClickListener { itemClickRemove?.deleteItem() } // 프래그먼트override fun deleteItem(view: View, position: Int) { Log.d("isWork?","work") showDialog(position) } 원인인터페..
-
개인 과제 트러블 슈팅 - filterAndroid 2024. 5. 8. 22:55
문제 상황 하트를 취소하고 내 보관함으로 이동하면 기본 레이아웃이 나온다. 나는 이걸 없애야 하는데.. 해결 방법1// StoreAdapter.ktfun bind(item: DocumentResponse) { Log.d("item",item.toString()) if (item.status == true) { Glide.with(context) .load(item.thumbnailUrl) .into(binding.ivPerson) binding.tvSitename.text = item.displaySitename bin..
-
개인 과제 트러블 슈팅 - 프래그먼트 트랜잭션Android 2024. 5. 7. 22:39
문제 시연 영상문제 상황내 보관함으로 이동하고 다시 이미지 검색으로 넘어갔을 때 프래그먼트가 초기화가 된다. (+ 하트도 지워진다)문제 코드override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) setFragment(SearchFragment()) // fragment 방식을 replace 와 add 비교해서 다음엔 add 적용해보기 binding.apply { btnSearch.setOnClickListener { setFragment(SearchFragm..
-
시간복잡도 줄이기(약수의 개수)Android 2024. 5. 3. 23:23
알고리즘 문제가 난이도가 올라가다 보면 시간 복잡도까지 고려해야 하는 경우가 있다.약수의 개수에 대해 예시를 들자면, 만약에 12의 약수를 구하는데 있어서 아래의 코드를 먼저 생각할 수 있다.fun before(n: Int): Int { var sum = 0 for (i in 1..n) { if (n % i == 0) sum++ } return sum} 해당 코드는 만약 n 이 12일 경우, 1부터 12까지의 모든 수를 12로 나누었을 때 나머지가 0이 되는 것을 약수로 분류하는 경우이다. 이렇게 하면 약수의 개수를 구할 수 있지만, 1부터 12까지의 수를 전부 탐색해야 한다. 이때, 시간 복잡도를 O(n)이라고 이해할 수 있다. 하지만, 약수의 개수를 좀 더 쉽게 구할..