Kotlin(37)
-
Kotlin Infix func
Kotlin Infix function 이란? ; 두 개의 객체 중간에 들어가게 되는 함수 형태 ex) val day2 = mapOf("Monday" to "월요일", "Tuesday" to "화요일") 개발자가 직접 정의하는 Infix func infix fun dispatcher.함수명(receiver): 리턴타입 { } 위와 같은 형태로 사용 가능. 위의 예시와 비교하자면, Monday가 Dispatcher고, 월요일이 receiver ex) infix fun String.add(other:String): String { return this + other } class내에 정의하면 dispatcher 생략 가능 class StringAcc { var data = "" infix fun add(re..
2023.05.03 -
6 Design Patterns Every Android Developer Must Know
Singleton 오직 하나의 인스턴스만 허용함 응용프로그램의 모든 부분에서 액세스가 가능 singleton클래스는 외부 코드에 의존하지 않고, 자체 인스턴스를 생성해야함 singleton 클래스는 인스턴스가 스레드로부터 안전한지 확인해야함 키 속성을 유지하면서, 필요한 경우 쉽게 확장하거나 하위 클래스로 분류할 수 있느 방식으로 설계되어야함 lass Singleton private constructor() { companion object { private var instance: Singleton? = null fun getInstance(): Singleton { if (instance == null) { instance = Singleton() } return instance!! } } } DB나..
2023.05.03 -
Retrofit to Ktor
ktor을 써야하는 이유 💡 KMM을 사용해서 앱을 만든다고 생각해보자. ios에서는 java/android 기반인 Retrofit을 사용할 수 없다 .근데 ktor은 되는 모양…? 아래와 같이 종속성을 추가해줍시다 plugins { ... kotlin("plugin.serialization") version "1.7.10" ... } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") implementation("io.ktor:ktor-client-core:$ktorVersion") // CIO - for JVM and Android implementation("io.ktor:ktor-client-..
2023.05.03 -
알아두면 좋은 Kotlin extension
💡 자주 사용하는 extension들을 모아봤다 showToast() fun Context.showToast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } hideKeyboard() fun View.hideKeyboard() { val inputMethodManager = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } loadUrl() fun WebView.loadUrl(url: String?) { if (!url..
2023.05.03 -
DiffUtil로 RecyclerView효율화하기
최근에 recyclerview를 만지다보니.. diffutil을 조금 더 찾아보는 계기가 되었다. 사실 크게 관심은 없고 다들 그렇게 사용하니 사용하다가 .. ㅎㅎ DiffUtil이란? 리스트를 업데이트하는 유틸리티 클래스. RecyclerView 어댑터의 업데이트를 계산하는 데 사용된다 리스트에 변경된 부분만을 감지하여 갱신시켜주는 것! 예상 시간은 O(N + D^2) class StudentAdapter : ListAdapter(StudentCallback()) { inner class ViewHolder(private val itemView: View) : RecyclerView.ViewHolder(itemView){ ........ ........ } class StudentCallback : I..
2023.05.03 -
onBackPressed() deprecated issuede
이제 쓸 수...없다......onBackpressed................................................... 이렇게 된김에 deprecated 된 onBackPressed()를 핸들링해보자 아래와 같이 할 수 있다 Activity 내부에서 fun AppCompatActivity.onBackPressed(isEnabled: Boolean, callback: () -> Unit) { onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(isEnabled) { override fun handleOnBackPressed() { callback() } }) } // How To Use it : cla..
2023.03.10