在 Binding 中创建 setOnClickListener

Create setOnClickListener in Binding

希望是一个简单的查询;在我的片段中,我设置了一些点击监听器:

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        Log.d(TAG, "onCreateView()")
        activity?.let {
            businessViewModel = ViewModelProvider(it).get(BusinessViewModel::class.java)
            Log.d(TAG, "businessViewModel = ${businessViewModel.toString()}")
        }

        // Inflate the layout for this fragment
        val binding: SitesFragmentBinding = DataBindingUtil.inflate(
            inflater, R.layout.sites_fragment, container, false
        )

        binding.apply {
            sitesOverflowOptionsMenuButton.setOnClickListener {
                showPopUp(it)
                Log.d(TAG, "sitesOverflowOptionsMenuButton clicked, showPopUp(it)")

            }

            sitesDrawerMenuButton.setOnClickListener {
                (activity as BusinessActivity).openCloseNavigationDrawer()
                Log.d(TAG, "sitesDrawerMenuButton clicked, openCloseNavigationDrawer()")
            }

            sitesFloatingActionButtonAdd.setOnClickListener {
                businessViewModel.getCurrentSite("")
                navController.navigate(R.id.action_sitesFragment_to_siteAddEditFragment)
                Log.d(TAG,"sitesFloatingActionButtonAdd clicked, navigating to siteAddEditFragment")
            }

            sitesClearIconImageView.setOnClickListener {
                sitesSearchFilterEditTextView.text.clear()
            }

            sitesFilterIconImageView.setOnClickListener {
                filterDialog()
            }


            sitesFilterIconImageView.setOnLongClickListener{
            
            // This doesn't work - type mismatch, required Boolean, found Unit
            
            }

        }

        return binding.root
    }

如上,setOnClickListener 类型不匹配,(需要布尔值,已找到单位)。

它建议创建一个扩展函数,但我似乎无法让它工作..

只是 return lambda 中的一个布尔值 return。

sitesFilterIconImageView.setOnLongClickListener{
   //Your other code
   false
}