您的位置:首页 > 移动开发 > Android开发

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

2018-03-17 11:52 751 查看

一.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);
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: