我可以在 Kotlin 或 Java 中简化侦听器的实现吗?

can*_*wow 2 java android kotlin

binding.seekbarConstrast.setOnSeekBarChangeListener(object :
            SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean){}

            override fun onStartTrackingTouch(seekBar: SeekBar?) {}

            override fun onStopTrackingTouch(seekBar: SeekBar?) {
                mainViewModel.adjustConstrast(
                    ProcessUtils.seek2param(
                        seekBar!!.max, 0f, 4f, seekBar.progress
                    )
                )
            }
        })
Run Code Online (Sandbox Code Playgroud)

这段代码在Android中,我讨厌下面的代码,太多的seekbars使无意义的代码变得非常长,我可以使用Kotlin或Java来简化侦听器的实现吗?像Android动画适配器一样,只实现我想要使用的东西。谢谢。

override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean){}
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
Run Code Online (Sandbox Code Playgroud)

Md.*_*man 6

根据您的要求创建您自己的自定义侦听器

abstract class OnSeekBarSimpleChangeListener : SeekBar.OnSeekBarChangeListener {
    override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
        // Nothing
    }

    override fun onStartTrackingTouch(seekBar: SeekBar?) {
        // Nothing
    }

}
Run Code Online (Sandbox Code Playgroud)

然后使用

binding.seekbarConstrast.setOnSeekBarChangeListener(object : OnSeekBarSimpleChangeListener() {

    override fun onStopTrackingTouch(seekBar: SeekBar?) {
        mainViewModel.adjustConstrast(
            ProcessUtils.seek2param(
                seekBar!!.max, 0f, 4f, seekBar.progress
            )
        )
    }
})
Run Code Online (Sandbox Code Playgroud)