Android Kotlin入门(RecyclerView的使用)
来源:互联网 发布:淘宝自出版平台 编辑:程序博客网 时间:2024/06/11 23:12
前言
作为Android开发,很有必要了解一下系统新特性,也很有必要了解一下新的开发语言(Kotlin),借着昨天晚上的时间入入门,今天中午记录一下。就不以helloword入门了,我们写一个Recyclerview列表吧。
开干
Android Studio 升级到3.0,自带kotlin功能,新建项目也完全一样,以前创建MainActivity.java 现在创建kotlin文件,创建一个kt文件,继承AppCompatActivity,完成Activity的功能,继承的写法如下:
package teltplay.example.com.kotlindemoimport android.os.Bundleimport android.support.v7.app.AppCompatActivity/** * Created by italkbb on 2017/12/6. */class MainActivity : AppCompatActivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }}
这就算一个helloword,不用做什么配置就可以运行了。
下一步导入recyclerview的库吧:
implementation 'com.android.support:recyclerview-v7:26.1.0'
这里我才开始直接是在as里面搜索添加的库,版本和appcompat-v7:26.1.0版本不一样,之前是recyclerview-v7:27.0.2,这样当然会报错:
java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' appears in /data/app/teltplay.example.com.kotlindemo-1/base.apk)
更改版本后就好了,具体代码如下:
package teltplay.example.com.kotlindemoimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.support.v7.widget.LinearLayoutManagerimport android.support.v7.widget.RecyclerViewimport android.view.ViewGroupimport android.widget.TextView/** * Created by italkbb on 2017/12/6. */class MainActivity : AppCompatActivity(){ /** * 我这里才开始是用lateinit关键字的,这个关键字的意思就是延迟赋值,这样使用recyclerview的时候就不用?判空了, * 当然这样用可能不太好,因为习惯了java的语法,还是private定义个变量吧, * 当然这个demo完全可以在Oncreate里面 val recyclerview ,成为不可变量,但一直以来view基本都会是类的成员变量 */// lateinit var mRecyclerView:RecyclerView private var mRecyclerView:RecyclerView?=null var mRecyclerViewDatas = listOf( "第一条数据", "第二条数据", "第三条数据", "第四条数据") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mRecyclerView = findViewById<RecyclerView>(R.id.recyclerview) as RecyclerView mRecyclerView?.layoutManager = LinearLayoutManager(this) mRecyclerView?.adapter = KotlinAdapter(mRecyclerViewDatas) } class KotlinAdapter(val datas : List<String>) : RecyclerView.Adapter<KotlinAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder(TextView(parent.context)) } override fun getItemCount(): Int = datas.size override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.textView.text = datas[position] } class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) }}
通过查询lateinit关键字,得到:对于非空类型的属性是必须初始化的。如果我们希望延迟进行初始化,就可以使用lateinit关键字了。
lateinit只能在不可null的对象上使用,比须为var,不能为primitives(Int、Float之类),这里用lateinit修饰view其实也行,只是为null的时候可能会exception;当然这段时间不是看了php也就看了js嘛,var啥的还是见过,var修饰可变变量,允许有getter 和 setter,val是不可变变量,它类似于Java中的final,所以如果以val声明就不允许有setter方法。
通过上面的代码一个简单的Recyclerview就轻松展示了,效果图我觉得没必要贴了。不过贴一个也无妨。
最后
简单的kotlin使用就这样,语言都差不多,要上手很简单,而且kotlin跟python很像,后期还得继续学习,以便于以后如果要用能够很快上手。
- Android Kotlin入门(RecyclerView的使用)
- 在Android中使用kotlin(recyclerview的使用)
- RecyclerView的入门使用
- kotlin开发Android入门篇八Kotlin开发Android的基本使用
- kotlin开发Android入门篇二类的使用与创建
- Kotlin的RecyclerView适配器
- Android Studio使用Kotlin开发Android入门
- Kotlin使用(fragment的切换与listview、recyclerView的使用)
- 在kotlin中使用RecyclerView
- 【4】Kotlin中使用RecyclerView
- Kotlin使用retrofit实现recyclerview
- 使用kotlin开发Android入门--创建项目
- Kotlin---android官方开发语言使用入门
- Android 中使用 Kotlin 快速入门
- Android中Kotlin的学习(点击事件、跳转、for循环、RecyclerView、回调)
- KotLin的简单使用 KotLin入门基础 AndroidStudio中配置KotLin插件 新建KotLin工程
- Android -- RecyclerView的使用
- Android RecyclerView的使用
- 安装maven 之后配置环境变量后 ,在命令行 中输入 mvn 遇到的C:\Users\Administrator>mvn The JAVA_HOME environment variabl.的错误
- 2144 数据结构实验之图论九:最小生成树
- Less函数说明
- [Err] 1054
- 2.JavaScript的一些基本语法
- Android Kotlin入门(RecyclerView的使用)
- 只有浏览器显示找不到服务器dns
- C++11 新特性总结
- 第十五周项目3
- js提交数据到后台(json)," 被转译 成了"
- com/beust/jcommander/ParameterException : Unsupported major.minor version 52.0
- dockers 部署mongo
- hdoj 2817 A sequence of numbers
- 几何变换详解