Android 中使用Lambda運算式

來源:互聯網
上載者:User

Android 中使用Lambda運算式

Android Studio預設使用Lambda運算式是會報錯的,即使你使用的是java 8,為了在android studio中使用lambda運算式,我們必須藉助一個外掛程式retrolambda ,該外掛程式將java 8中的lambda運算式特性相容到java 5。使用它也很簡單。

首先先項目根目錄下的build.gradle中加入

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

最終整個檔案會像這樣子

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.2.3'        classpath 'me.tatarka:gradle-retrolambda:3.2.0'    }}allprojects {    repositories {        jcenter()    }}

然後再module目錄下的build.gradle中使用外掛程式,加入

apply plugin: 'me.tatarka.retrolambda'

並且在android節點下加入

    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }

最終整個檔案就像這樣子

apply plugin: 'com.android.application'apply plugin: 'me.tatarka.retrolambda'android {    compileSdkVersion 22    buildToolsVersion 22.0.1    defaultConfig {        applicationId cn.edu.zafu.rxdemo        minSdkVersion 15        targetSdkVersion 22        versionCode 1        versionName 1.0    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:22.2.0'}

現在讓我們試試lambda運算式,就拿View的點擊事件做實驗吧。

在使用lambda運算式之前是這樣子的

btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {          Toast.makeText(getApplicationContext(), test, Toast.LENGTH_LONG).show()      }});

使用了lambda運算式之後是這樣子的

btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(v -> Toast.makeText(getApplicationContext(), test, Toast.LENGTH_LONG).show());

好了,運行一下項目,如果點擊按鈕出現了Toast說明你成功了,但是如果你運行出現ClassNotFound的錯誤的話clean一下項目,再編譯運行,就能成功運行了。

怎麼樣,有沒有發現代碼精簡了許多。這篇文章算是開始RxJava(RxAndroid)的學習之路的第一篇博文吧,畢竟RxJava大量使用了lambda運算式特性。雖然也可以不用lambda運算式,但是使用了lambda運算式後會顯得代碼特別精簡。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.