The last option for me but I bind with databinding and the object is usually accessibile within xml. Most of the time you create a variable to bind to its properties so you just pass it as a param.
So it gets you something like this
android:onClick="@{() -> (viewModel or interface or whatever).onItemSelected(item)}"