Android Programjaim

Android fejlesztes, java, kotlin, web.. miegymas:)

Kotlin moka

2018. május 24. 09:13 - lacas82

Kicsit regen blogoltam, par eve abbahagytam, de megint nekikezdtem, valahogy jo erzes. Minden fele uj dologrol fogok irni megint, ami tetszik/nem tetszik. Lassunk egy kis kotlint.

Kotlin extensions!

Nezzunk egy peldat ra. Keszitesz egy extensions.kt nevu filet androidon, majd belerakod ezt

fun String.formatDate(): String {
val fromFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
val toFormat = SimpleDateFormat("yyyy.MM.dd HH:mm", Locale.US)
val date = fromFormat.parse(this)
return toFormat.format(date).toString()
}

private fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
})
}

Ezek utan lesz egy shortcut method-od a String-re, vagy az EditText-re. (Extension)

Logger.E("2018-01-01 11:22:35".formatDate())

return: "2018.01.01 11:22"

 

Hat nem gyonyoru?

Vagy pl az apply, with

fun openNewIntent(c: Context, clazz: Class<*>) {
val intent = Intent(c, clazz).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP }
c.startActivity(intent)

}

with(Akarmi) {

  method1()
  method2()
  akarmi = vmi
}

singleton

object SomeSingleton {
init {
println("init complete")
}
}

lazy

companion object {
val instance: GitHubService by lazy {
val
retrofit = Retrofit.Builder()

.baseUrl("https://api.github.com/")
.build()
retrofit.create(GitHubService::class.java)
}
}


say goodbye to findviewbyid!!!


ugyan erre tobb megoldas is szuletett mar, butterknife, databinding, etc..

de itt van nekunk a kotlinos extension "synthetic" verzio

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

van egy layoutod ugye, amiben van egy textview egy id-vel

    <TextView
        android:id="@+id/welcomeMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Hello World!"/>
 
MainActivityben egyszeruen meghivjuk:

   welcomeMessage.text = "Hello Kotlin!"

hogy hasznalni tudjuk, egyszeruen importaljuk be:

    import kotlinx.android.synthetic.main.activity_main.*

 
Bovebben:

https://antonioleiva.com/kotlin-android-extensions/

Címkék: kotlin