kotlin 接口回调的优化

class MainActivity : FragmentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //以下对应java中的 view设置setOnClickListener各种写法
        //实现一个接口回调 不使用lambda实现方式,但是如果接口中有多个回调  适合这个写法
        textView6.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                startActivity(Intent(applicationContext, ArticleListActivity::class.java))
            }

        })
        //回调函数的Kotin的lambda的简化 在lambda表达式中 只支持单抽象方法模型,
        // 就是接口只有一个抽象方法,多个回调不支持

        //This inspection detects a lambda expression inside parentheses which can be moved outside of them
        textView1.setOnClickListener({ view: View ->
            startActivity(Intent(this, ArticleListActivity::class.java))
        })

        //This inspection detects a lambda expression inside parentheses which can be moved outside of them
        textView2.setOnClickListener({ view ->
            startActivity(Intent(this, ArticleListActivity::class.java))
        })
        //This inspection detects a lambda expression inside parentheses which can be moved outside of them
        //说明了view参数没使用的时候是可以直接去掉的
        textView3.setOnClickListener({
            startActivity(Intent(this, ArticleListActivity::class.java))
        })
        
        //说明最后一个参数是函数的话,直接可以把{}括号的实现 提到()外面
        textView4.setOnClickListener() {
            startActivity(Intent(this, ArticleListActivity::class.java))
        }
        // 最简洁的自写法
        textView5.setOnClickListener {
            startActivity(Intent(this, ArticleListActivity::class.java))
        }

    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容