candrwow
candrwow

Reputation: 521

Can I simplify the implementation of listeners in Kotlin or Java?

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
                    )
                )
            }
        })

This code is in Android,I hate below code,too many seekbars make meaningless code extremely long, Can I use Kotlin or Java to simplify the implementation of listeners?Like Android animation adapter,only implementation what I want use.Thank you.

override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean){}
override fun onStartTrackingTouch(seekBar: SeekBar?) {}

Upvotes: 3

Views: 514

Answers (1)

Md. Asaduzzaman
Md. Asaduzzaman

Reputation: 15423

Create your own custom listener as per your requirement

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

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

}

And then use

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

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

Upvotes: 6

Related Questions