kotlin 高阶函数 代替 接口回调

1 Java的接口回调

在Java当中,使用接口回调的形式传递数据很常见,定义接口,声明接口,在A类中传入接口的实例对象,就可以接收传入的数据index.而在kotlin中,比较简单,传入一个函数即可

B

public class B {

	 void testClick(){
        if (iUpdateListener!=null){
            iUpdateListener.updateItem(9);
        }
    }

    IUpdateListener iUpdateListener;

    public void setiUpdateListener(IUpdateListener iUpdateListener) {
        this.iUpdateListener = iUpdateListener;
    }

    interface IUpdateListener{
        void updateItem(int index);
    }
}

A

public class A {

    void testMethod(){
        B b = new B();
        b.setiUpdateListener(new B.IUpdateListener() {
            @Override
            public void updateItem(int index) {
                //TODO 接收调用的地方
            }
        });

    }
}

2.kotlin 高阶函数

先说下高级函数的结构,kotlin 函数一等公民,可以由引用来代表一个函数。

 imageLoader: ((T, ImageView) -> Unit)
  • imageLoader 函数的引用对象

  • (T, ImageView) 当前函数的参数,T 是泛型

  • ->Unit 这部分就是函数的返回值

使用:

B

fun setDataList(
	dataList: List<T>,
	imageLoader: ((T, ImageView) -> Unit)  ) {
		调用高阶函数,传入参数即可,就会回调到A类的函数体
		this.imageLoader(dataList[position], mImageView)
}

A

  viewHolder.myGridView.setDataList(listItem.images) { bean, imageView ->
	Glide.with(mContext).load(bean.imgOrgUrl).into(imageView)
  }
  
 //bean 对应泛型对象
 //imageView 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值