Search code examples
kotlinandroid-viewbinding

How to View Bind multiple layouts in Kotlin


I'm trying to migrate from Kotlin synthetics to View Binding. How should I View bind from two different layouts. I'm trying to connect a button from fragment Main layout and from custom dialog layout. Right now I can connect button id from fragment main layout.Example code below:

class MainFragment: Fragment(R.layout.fragment_main) {

    private var fragmentMainBinding: FragmentMainBinding? = null

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        // Main fragment viewbinding
        val binding = FragmentMainBinding.bind(view)
        fragmentMainBinding = binding

        // FAB button onClick Listener
        binding.fabAddItem.setOnClickListener {
            // Inflate add_item_dialog.xml custom view
            val dialogView = LayoutInflater.from(activity).inflate(R.layout.add_item_dialog, null)

            // Add AlertDialog Builder
            val dialogBuilder = AlertDialog.Builder(activity)
                .setView(dialogView)

            //Show custom dialog
            val customAlertDialog = dialogBuilder.show()

            binding.btnClose.setOnClickListener {
                customAlertDialog.dismiss()
            }

        }
    }
}

Solution

  • If you want to get a hold of dialog binding you can do the following

    
    val dialogBinding = AddItemDialogBinding.bind(dialogView)