栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kotlin 高阶函数 代替 接口回调

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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,
	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 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号