모바일/Android_Kotlin(18)
-
[Kotlin] 람다 총정리
kotlin Lambda FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Something } }); /** * Interface definition for a callback to be invoked when a view is clicked. */ public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was clicked. */ void onClick(View ..
2021.06.15 -
RecyclerView Item 드래그 앤 드랍(Drag and Drop) 순서 변경
RecyclerView Item 드래그 앤 드랍(Drag and Drop) 순서 변경 예전 listview를 사용했을때.. itemTouchHelper가 없을 시절에는 커스텀 리스트뷰를 만들어 일일히 구현을 했었다 onInterceptTouchEvent, onTouchEvent 에 터치 이벤트를 가로채고.. 터치된 이벤트에 y 좌표를 계산하고 ACTION_DOWN에서 놓은 좌표의 y값을 계산해서 아이템의 순서를 리턴했었다 하지만 이 복잡한 과정들을 RecyclerView 와 ItemTouchHelper가 매우 쉽게 만들어 주었는데 코드를 하나하나 짚어보면서 확인해보자 ItemTouchHelper.CallBack() 먼저 ItemTouchHelper의 콜백 함수를 Implement 하여 움직임이 있을때, ..
2021.06.09 -
Generic 클래스와 함수 정리
[Kotlin] Generic 클래스와 함수 정리 Generic 클래스 fun main() { println(Person("hello").t) println(Person(99).t) } class Person (val t:T) //출력 hello 99 두번째 print는 99가 int 라는것이 명확하기 때문에 타입지정을 안해주어도 된다 제네릭을 사용하면, 캐스팅을 거치지 않기 때문에 프로그램 속도를 상승시킨다. 참고 Generic 기호는 T,S,U,V 를 사용한다. 관습일 뿐, 컴파일 에러가 나지는 않는다. Generic 함수 fun main() { printGO(1) printGO("asdf") } fun printGO(text : T) : Unit{ println(text.toString()) } 더..
2021.06.04 -
[kotlin] 코루틴이란?, runBlocking?, suspendCancellableCoroutine
코루틴? 비동기 라이브러리 경량 스레드 OS에 의존적인 스레드와는 달리 스레드간 컨텍스트 전환 비용이 발생하지 않으며, 개발자가 직접 중지 지점을 선택할 수 있다. 기본적인 사용법 val scope = CoroutineScope(Dispatchers.Default) scope.launch{ //do } scope.launch(Disaptchers.IO){ //some I/O } 위 코드처럼 어느 스케줄러에서 비동기 로직이 실행될지 결정할 수 있다. 이런식으로 디스패치를 사용해서 어느 스레드풀에서 어느 로직이 실행될지를 결정할 수 있고 로직들의 규모를 세세하게 나눌 수 있다. 서스펜딩(suspending) 코루틴이 실행 중인 스레드를 블록킹하지 않으면서 실행 중인 코루틴을 잠시 중단시킬 수 있는 중단 지점..
2021.06.03 -
LiveData - Transformations.map, switchMap
LiveData - Transformations.map, switchMap 하나의 데이터가 바뀔 때마다 다른 여러 데이터들도 함께 바뀌어야하는 상황을 많이 만나게 됩니다. 또 Room이나 Retrofit 등 데이터베이스나 네트워크 통신을 도와주는 라이브러리와 함께 사용되기도 합니다. 이럴 때 사용하는 것이 바로 Transformations 의 map 과 switchMap 메소드입니다. Transformations.map 코틀린 컬렉션에서 제공하는 map은 위에서 보듯이 요소 각각에 2를 곱해 새로운 List를 반환한다. 포인트는 새로운 List를 반환한다는 것이다. Transformations.map역시 마찬가지다. val userLiveData: MutableLiveData = repository.ge..
2021.06.03 -
AndroidManifest.xml receiver tag is incompatible with attribute description (attr) reference.
가 있으니 is incompatible with attribute description (attr) reference. 오류났음 -->
2021.03.08