之前一直使用java来开发Android项目,学了新的kotlin语言,前来试一试,并说一下kotlin对Android的一些功能增强

创建项目

我使用的是Android Studio3.0+,所以默认就支持kotlin

创建项目的时候记得勾选kotlin支持

找到实例与设置监听器

以往我们是通过findviewbyid来找到实例,而kotlin中提供了一种更为快捷的方式,只需要一行代码,之后我们就可以直接使用布局里面的定义的各种实例了

像平常一样,我们可以使用实例来更改控件的内容,同时,这个按钮也可以作为监听器的判断。

以往我们的点击监听器,使用switch或者if语句来判断点击的控件,从而执行不同的操作。而kotlin中,直接使用实例判断,具体的代码在下面的MainActivity.java中

switch(v.getId){
case R.id.btn:
//逻辑操作
break;
}
if(v.getId == R.id.btn){
//逻辑操作
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.wan.noveldownloader.activity.MainActivity"> <Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试" />
</android.support.constraint.ConstraintLayout>

MainActivity.java

package com.wan.noveldownloader.activity

import android.os.Bundle
import android.view.View
import com.wan.noveldownloader.R
import kotlinx.android.synthetic.main.activity_main.* class MainActivity : BaseActivity(),View.OnClickListener {
override fun onClick(v: View?) {
when (v) {
//操作
btn_test -> showToast("htllo")
}
} override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//这里的btn_test就是布局文件的按钮实例
//输入btn_test会自动增加一行import kotlinx.android.synthetic.main.activity_main.*
btn_test.setOnClickListener(this)
}
}

跳转

val intent = Intent(this, SettingActivity::class.java)
startActivity(intent)

直接实现抽象类中接口方法

使用object来实现抽象类接口方法

val rvAdapter = object : RVAdapter<DownloadingItem>(lists) {

            override fun bindDataToView(holder: RVAdapter.RVViewHolder, position: Int, bean: DownloadingItem, isSelected: Boolean) {

            }

            override fun getItemLayoutID(position: Int, bean: DownloadingItem): Int {
return 0
} override fun onItemClick(position: Int, bean: DownloadingItem) { }
}

最新文章

  1. 手把手教你配置UltraEdit对Oracle的PLSQL着色
  2. Android学习十一:高德地图使用
  3. Exception:A generic error occurred in GDI+
  4. IEnumerable&lt;&gt; ICollection &lt;&gt; IList&lt;&gt; 区别
  5. RDS记录
  6. tmp_table_size
  7. linux tcp协议状态机
  8. 未完结第八节 JBPM流程节点
  9. TFS 强制撤销别人签出的代码
  10. HDU 3642 Get The Treasury (线段树扫描线,求体积并)
  11. UITableView编写可以添加,删除,移动的物品栏(二)
  12. Linux编程基础——GDB(设置断点)(转:TianFang,cnblog: http://www.cnblogs.com/TianFang/archive/2013/01/20/2868889.html)
  13. 再次探讨C++的动态绑定和静态绑定
  14. ffdshow 源代码分析1 : 整体结构
  15. java -Xms -Xmx -XX:PermSize -XX:MaxPermSize
  16. 修改oracle内存
  17. Codeforces Round #410 (Div. 2)C. Mike and gcd problem
  18. pam密码策略
  19. python从零安装
  20. [Python3]subprocess.check_output() 在python3的输出为bytes而非string,在实际使用过程中得增加一个解码过程decode(),不然会有问题

热门文章

  1. netty源码解解析(4.0)-20 ChannelHandler: 自己实现一个自定义协议的服务器和客户端
  2. CodeForces gym Nasta Rabbara lct
  3. codeforces 626 G. Raffles(线段树+思维+贪心)
  4. 【Offer】[10-2] 【青蛙跳阶问题】
  5. map + filter + reduce
  6. 【LeetCode】103# 二叉树的锯齿形层次遍历
  7. python+selenium自动化测试——浏览器驱动
  8. sparkSql使用hive数据源
  9. MySQL实现Oracle rank()排序
  10. FJUT2019暑假周赛三部分题解