How to attach databinding layout to root in android Activity?

Viewed 106

I am using databinding feature in my android app and I want to attach this layout into root in onCreate method because I am using Main Activity.kt fil

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}

activity_main.xml

<merage>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />

</merage>

How to do this using Kotlin.

2 Answers

If you are using activity_main.xml then the generated class is ActivityMainBinding.

In the MainActivity's onCreate() you can do something like this:

class MainActivity : AppCompatActivity() {

 private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //setContentView(R.layout.activity_main)

        binding = DataBindingUtil.setContentView(this,R.layout.activity_main)

       
    }
}
class TestActivity : AppCompatActivity() {

 private lateinit var binding: ActivityTestBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

       binding = DataBindingUtil.setContentView(this,R.layout.activity_test)
       
    }
}
Related