美文网首页
kotlin 接口回调的优化

kotlin 接口回调的优化

作者: 萍水相逢_程序员 | 来源:发表于2018-10-18 14:11 被阅读0次
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))
        }

    }
}

相关文章

网友评论

      本文标题:kotlin 接口回调的优化

      本文链接:https://www.haomeiwen.com/subject/wtrjzftx.html