코딩 22

코틀린 mapTo

inline fun Array.mapTo( destination: C, transform: (T) -> R ): C collection 프레임워크 사용 시 각 element들을 변형을 거쳐서 다른 collection에 쉽게 복사할 수 있는 함수입니다. ex) String형 List에 있는 데이터들을 Int형 List로 옮기고 싶은 경우 var list = arrayOf("1", "2", "3", "4") var p = ArrayList() list.mapTo(p, { s -> s.toInt()n } ) println(p.toString()) 결과 [1, 2, 3, 4] 나의 경우는 새로운 리스트를 temp리스트를 생성해서 조건에 맞는 리스트를 넣어주는 것이었다. viewModel.listParticipa..

코딩/코드리뷰 2021.11.18

lateinit 초기화 확인하기

kotlin 1.2부터는 lateinit 초기화를 확인 할 수 있다. 실제 값을 사용할 때 lateinit을 한번 체크해줌으로써 안전하게 접근할 수 있따. 이때 아래와 같이 ::을 통해서만 접근이 가능한 .isInitialized을 사용하여 체크할 수 있다. // 부르는 시점 초기화 sampleAdapter = SampleAdapter(ImageLoaderAdapterViewModel(this@SampleMainActivity, 3)) if (::sampleAdapter.isInitialized) { sampleAdapter.addItem() sampleAdapter.notifyDataSetChanged() } isInitialized는 Higher-Order function과 kotlin extensi..

코딩/코드리뷰 2021.09.09

뷰 바인딩

View binding 이란? 간단하게 findViewById를 쓰지 않고, XML의 view component에 접근하는 object를 반환받아 view에 접근하는 방식입니다. 여기서 말하는 object는 Android studio에서 자동으로 대신 만들어줍니다. 액티비티에서 이미 binding = ActivityPreviewmovieBinding.inflate( layoutInflater ) 바인딩을 해준 상태이고. 그 안에 include된 변수를 가져올 때에는 binding.변수.변수로 접근하여 사용했다. 하지만, parentView를 넣어 binding해야 하는 경우가 생김. bindingCustomOverlay = ExoStyledPlayerCustomOverlayViewBinding.infla..

코딩/코드리뷰 2021.08.31

for문 filter와 map으로 변경하기

1. 내가 짠 소스 for( data in images ) { if( data.type == TYPE ) { list.add(data) } } filter와 map을 이용 list.addAll( images.filter { data -> data.type == TYPE }.map { data -> data } ) 성능상 부담스럽다면 mapNotNull을 이용할 수도 list.addAll( images.mapNotNull { data -> data.takeIf{ data.type == TYPE }?.let { it } } ) filter() : 필터 filter()는 리스트내에 인자들 중 조건에 일치하는 인자만 필터링합니다. map() : 변환 map()은 컬랙션 내 인자를 변환하여 반환할 때 사용됩니다...

코딩/코드리뷰 2021.08.27