Android Studio引入Lambda以及介绍和简单实用

一.studio中引入Lambda

依次点击File->Other Settings->Default Project Structure

JDK location确保当前项目实用的JDK版本是1.8


打开项目(Project)的build.gradle,在dependencies节点添加

classpath 'me.tatarka:gradle-retrolambda:3.2.5'

打开项目(Module)的build.gradle在根节点添加

apply plugin: 'me.tatarka.retrolambda'

在android接点添加

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

二.使用lambda表达式的三种写法

当我们在Android开发中,去写一个线程或者button的点击事件时,写完之后使用代码折叠功能,可以看到如下预览


这个其实就是Lambda表达式的写法,对于我们开发来说,不会去关心这个类以及方法

只会关心这个方法内的代码,所以其他的多余代码就显得多余了。

1.第一种方式,无参数+语句(代码块):使用于匿名内部类中方法无参数的情况

public void testNombal(){
    //传统写法
    myHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Log.e("TAG","lambda");
        }
    },1000);
}
//Lambda表达式写法
public void testLambda(){
    myHandler.postDelayed(() -> Log.e("TAG","lambda"),1000);
}

2.第二种方式,有参数+语句:适用于内部类中方法只有一个参数的情况

/**
 * 第二种方式,有参数+语句:使用于匿名内部类方法只有一个参数的情况
 * 方法参数 -> 语句
 * 活
 * 方法参数 ->代码块
 */
/**
 * 传统写法
 */
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.e("TAG","test");
    }
});
/**
 * 使用lambda表达式
 */
findViewById(R.id.button3).setOnClickListener(v-> Log.e("TAG","test"));

3.第三种方式,有参数+代码块:适用于匿名内部类中方法不只一个参数的情况

/**
 * 第三种方式,有参数+代码块:适用于匿名内部类中方法不止一个参数的情况
 * (参数1,参数2) -> 语句
 * 或
 * (参数1,参数2)-> {代码块}
 */
CheckBox checkBox = findViewById(R.id.checkbox);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        Log.e("TAG","test");
    }
});
checkBox.setOnCheckedChangeListener((buttonView,isChecked) -> {
    Log.e("TAG","test");
    Log.e("TAG","test"+isChecked);
});
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值