scala android 开发环境搭建,用Scala开发Android应用-使用trait与implicit优化Activity

创建一个FindView的trait

定义findView方法简化了findViewById(id).asInstanceOf

同时定义implicit简化了setOnClickListener

package org.noahx.scalaandroid

import android.app.Activity

import android.view.View

trait FindView extends Activity {

def findView[WidgetType](id: Int): WidgetType = {

findViewById(id).asInstanceOf[WidgetType]

}

}

class ViewWithOnClick(view: View) {

def onClick(action: View => Any) = {

view.setOnClickListener(new View.OnClickListener() {

def onClick(v: View) { action(v) }

})

}

}

object FindView extends Activity {

implicit def addOnClickToViews(view: View) =

new ViewWithOnClick(view)

}

有了以上的定义我们的原有的Activity就可以修改为

package org.noahx.scalaandroid

import android.app.Activity

import android.os.Bundle

import android.widget.Button

import android.widget.TextView

import android.view.View

import FindView._

class ScalaAndroidActivity extends Activity with FindView {

lazy val text = findView[TextView](R.id.text1)

lazy val button = findView[Button](R.id.button1)

override protected def onCreate(savedInstanceState: Bundle) = {

super.onCreate(savedInstanceState)

setContentView(R.layout.main)

button.onClick { view: View =>

text.setText("hello scala!!!")

}

}

}

lazy方式也可以让组件定义全局化,便于使用

利用Scala语言的特点,代码变得简洁优雅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值