Skip to main content

Lambda表达式在Kotlin中怎样工作的

用SetOnclickListener原本方法

view.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
toast("Hello")
}
})

用Lambda方法。

view.setOnClickListener({ v -> toast("Hello") })


1. class MenuKaiJiangLiShiFragment : BaseFragment(),View.OnClickListener, BaseQuickAdapter.OnItemClickListener{
2.
3.
4. override fun onItemClick(adapter: BaseQuickAdapter\<\*, \*\>?, view: View?, position: Int) {
5. showToast("点击了$position")
6. }
7.
8. adapter.setOnItemClickListener(this)

第一种同java类继承interface 实现方法

        adapter.setUpFetchListener {  showToast("刷新中...") }

第二种kotlin自己得写法,当监听interface的方法中没有参数可以使用这种超简单写法,如果方法中有参数使用这种编辑器会报错不能通过编译


1. adapter.setOnLoadMoreListener(object:BaseQuickAdapter.RequestLoadMoreListener{
2. override fun onLoadMoreRequested() {
3. showToast("加载中...")
4. adapter.loadMoreComplete()
5. }
6. }, rv\_kjls)

第三种kotlin写法,使用object关键字,匿名内部类方式

![] (/CAB8D1F59D4FCA48384E659D9C9A3DBC.png)


1. adapter.setOnLoadMoreListener({
2. showToast("加载中...")
3. adapter.loadMoreComplete()
4. }, rv\_kjls)

as提示我可以优化代码,果断alt+enter

今天写长按时间的时候遇到有返回值的listener

第四种加返回值。注意在->后面加true 或者false ,这就是返回值。。。。写出来了发现真简单,不知道的时候真是一脸懵逼~


1.
2. allocAdapter.setOnItemLongClickListener{
3. adapter, view, position-\>
4. 代码块
5.
6. true
7.
8. }

看自定义listener的时候发现->后面写返回值的


1. private lateinit var listen: ((Int) -\> Unit)
2.
3. fun setListen(listen: ((Int) -\> Unit)) {
4. this.listen = listen
5. }
6.
7.
8. //定义个延迟加载的listener变量,属性是一个方法,方法内有3个参数,字符串,布尔,实体类,返回值是布尔
9. private lateinit var listen: ((String, Boolean, Bean) -\> Boolean)
10.
11. fun setListen(listen: ((String, Boolean, Bean) -\> Boolean) {
12. this.listen = listen
13. }



1.
2. class XSPagerAdapter(fm: FragmentManager, list: ArrayList\<CommonInvitationFragment\>) : FragmentPagerAdapter(fm) {
3. private var fragmentList: ArrayList\<CommonInvitationFragment\> = list
4.
5. override fun getItem(position: Int): Fragment {
6. return fragmentList[position]
7. }
8.
9. override fun getCount(): Int {
10. return fragmentList.size
11. }
12.
13. }

记录kotlin怎样使用构造参数