architecture-samples icon indicating copy to clipboard operation
architecture-samples copied to clipboard

Use Kotlin-extensions - todo-mvp-kotlin

Open pedromassango opened this issue 7 years ago • 1 comments

I want to add kotlin-extensions to reduce the code, and keep it mutch simple.

pedromassango avatar May 06 '18 12:05 pedromassango

Background: Kotlin Android Extensions (a.k.a. kotlinx.android.synthetic) used to let you access views directly by their XML IDs without calling findViewById(). However, Google deprecated this feature in Kotlin 1.4.20 and recommends View Binding instead.

Original (Before Kotlin Extensions)

class TaskDetailActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.task_detail_act)

    val titleTextView = findViewById<TextView>(R.id.task_detail_title)
    val descriptionTextView = findViewById<TextView>(R.id.task_detail_description)

    titleTextView.text = "My Task"
    descriptionTextView.text = "This is the description"
}

} With Kotlin Extensions (Deprecated)

import kotlinx.android.synthetic.main.task_detail_act.*

class TaskDetailActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.task_detail_act)

    task_detail_title.text = "My Task"
    task_detail_description.text = "This is the description"
}

} No findViewById, views are available directly by ID.

Modern Alternative — View Binding

class TaskDetailActivity : AppCompatActivity() { private lateinit var binding: TaskDetailActBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = TaskDetailActBinding.inflate(layoutInflater)
    setContentView(binding.root)

    binding.taskDetailTitle.text = "My Task"
    binding.taskDetailDescription.text = "This is the description"
}

} Safe (null-safety, type-safety)

Works in fragments, adapters, etc.

Officially supported and maintained.

Recommendation for the todo-mvp-kotlin repo If the intention is just to simplify UI code:

Back in 2018 → Kotlin Android Extensions was a good choice for less boilerplate.

Now → Replace with View Binding for a future-proof approach, since Kotlin Extensions are deprecated.

VaradGupta23 avatar Aug 08 '25 11:08 VaradGupta23