TLI (38) 썸네일형 리스트형 border line 만들기 drawable에 를 사용한다.원하지 않는 부분은 음수로 지정한다.shape를 rectangle로 만들고 음수인 영역만 라인이 없어진다.(예시는 start(왼쪽 세로선)를 만듦) ConstraintLayout의 weight 비율 조정 개요ConstraintLayout내에서 같은 레벨인 View들은 화면의 비율을 나눠 가질 수 있다.vertical로 한다면 모두 height=0 / horizontal로 한다면 width=0으로 해줘야 한다.vertical / horizontal에 따라 각각의 view에 `app:layout_constraintVertical/Horizontal_weight`의 값을 비율로 나눠 주면된다. OnBackPressedCallback(true) 개요하단의 뒤로가기 버튼은 Activity에 있는 것이므로 Activity의 `onBackPressedDispatcher`에 callback을 추가해줘야 한다.`onBackPressedDispatcher.onBackPressed()`를 호출했을 때 addCallback된 callBack 메서드가 없으면 default callback이 실행된다.추가 된 것이 있으면 그 것을 실행하는데 그 안에서 `onBackPressedDispatcher.onBackPressed()`을 호출하면 무한루프에 빠지게 된다.`OnBackPressedCallback(true)`isEnabled = true 라는 의미true인 callback 메서드만 실행이 가능하다.false로 바꿔주면 다시 호출되지 않는다. private.. ListAdapter의 holder 재사용 visible인 상태에서 holder가 재활용이 되면 해당 holder에서 visible이 되기 원하지 않더라도 적용되어 있다.Visible / Gone에 대한 예외 처리를 모두 해줘야 재활용이 되었을 때 이전 holder의 상태를 가져가지 않는다.이전 holder에서의 예외 처리가 부족하면 재활용 되었을 때 그 상태를 들고 가게 된다.override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ... if(currentItem.snippet.isLike) { interestedHolder.like.visibility = ImageView.VISIBLE } else { // 예외처리 추가 .. Retrofit 응답용 data class@SerializedNameresponse json의 key값과 변수명이 다를 경우만 괄호 안에 문자를 입력해주면 된다.api의 key 값이 스네이크 케이스일 경우에 써주는 것이 좋다.data class DustResponse( @SerializedName("body") val dustBody: DustBody, @SerializedName("header") val dustHeader: DustHeader)data class DustBody( val totalCount: Int, @SerializedName("items") val dustItem: MutableList?, val pageNo: Int, val numOfRows: I.. Shared Preference / Room SharedPreference앱에 영구적으로 데이터를 저장하는 파일xml파일에 key:value 형식의 String타입으로 저장된다.주로 설정과 관련된 데이터를 저장한다.알림 / 앱의 기본 설정사항 등사용 방법저장getSharedPreferences("저장할 xml파일명", mode: Int)edit() : 편집 모드로 전환edit.putString(key, value)로 저장apply() : 저장 완료(commit)private fun saveData(){ val pref = getSharedPreferences("pref", 0) val edit = pref.edit() edit.putString("name", binding.etMain.text.toString()) edit.a.. Compose(Recomposition/rememeber/state hoisting) RecompositionComposable함수의 parameter 값이 바뀌면 해당 함수로 그리는 내용을 전부 다시 구성하는 것해당 Composable함수에 대해서만 재구성이 이루어 진다.단계CompositionLayoutDrawremembercomposable 함수의 내용이 바뀌면 그 부분만 수정되는 것이 아니라 해당 Composable함수 전체적으로 재구성된다.(recomposition)composable이 업데이트 되려면 새 상태를 명시적으로 알려야 한다.그 때 변하는 데이터를 기억하기 위한 것remember를 사용해 메모리에 객체를 저장한다.함수의 인자로 값을 받으면 val 타입이기 때문에 수정이 안되고Composable함수가 activity class 밖에서 정의되기 때문에 전역변수로 변하는 값.. 2024.07.30 TIL(RecyclerView) 로그(hashCode 확인)스크롤이 진행됨에 따라 holder가 재사용 되는 것을 hashCode로 확인했습니다. 이전 1 2 3 4 5 다음