Kotlin初步代码编写
来源:互联网 发布:淘宝旗袍模特周婷资料 编辑:程序博客网 时间:2024/05/29 07:25
- 类和构造函数
Kotlin创建类的方式与Java类似,如创建Person类:
class Person{ var name: String? = "" var age: Int = 0}
可以看到,Kotlin的变量声明方式略有些不同。另外,为了实现“空安全”,Kotlin对可以为空的变量和不可以为空的变量作了区分。在上述代码中,变量age不可为空,而?表明变量name可以为空。下面创建实例(注,Kotlin实例时没有关键字new,实例完就可以直接赋值了):
var person = Person()person.name= "yoyo"person.age = 22
构造函数在Kotlin创建非常简单(注,这个类没有任何内容可以省略大括号),如下:
class Person(var name: String?, var age: Int)
构造函数的函数体你可以写在init块中:
class Person(var name: String?, var age: Int){ init{ ... }}
- Kotlin编写类
从下面图可以看出可以创建Activity、file、class的kt文件
下面编写一个RecyclerView展示集合类HomeFragment.kt,由于xml比较简单就不贴出来了:
class HomeFragment : Fragment() { private var persons: List<Person>? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater!!.inflate(R.layout.fragment_home,container,false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) getData() val recyclerView : RecyclerView = view!!.findViewById(R.id.recycler_view) as RecyclerView recyclerView.layoutManager = LinearLayoutManager(activity!!) recyclerView.addItemDecoration(DividerDecoration(activity)) //java写的适配器// val adapter: HomeAdapter = HomeAdapter(activity, persons!!) //kotlin写的适配器 val adapter: HomeKtAdapter = HomeKtAdapter(activity, persons!!) recyclerView.adapter = adapter } /** * mock数据 */ private fun getData(): List<Person> { persons = listOf( Person("html", 12), Person("kotlin", 36), Person("java", 12), Person(null, 12), Person("android", 12), Person("ios", 12), Person("c++", 12), Person("php", 12) ) return persons as List<Person> }}
如你所见,我们定义类一个变量并转型为RecyclerView。这里与Java有点不同,LayoutManager、adapter等会通过属性的方式被设置,而不是通过set;
List的创建也与java不一样,现在简单的可以通过使用一个函数创建一个常量的List,它就会自动推断出结果的类型。
这里为了体现kotlin与java代码互通,这里写了两个适配器,一个是用java写的HomeAdapter.java,另一个是用kotlin写的HomeKtAdapter.kt
Java写的适配器HomeAdapter.java:
/** * HomeAdapter * Created by chen_yong on 2017/5/24. */public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> { private List<Person> persons; private LayoutInflater inflater; public HomeAdapter(Context mContext,List<Person> persons) { this.persons = persons; this.inflater = LayoutInflater.from(mContext); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(inflater.inflate(R.layout.home_item,parent,false)); } @Override public void onBindViewHolder(ViewHolder holder, int position) { Person person = persons.get(position); holder.tv_name.setText(person.getName()); holder.tv_age.setText(String.valueOf(person.getAge())); } @Override public int getItemCount() { return persons.size(); } class ViewHolder extends RecyclerView.ViewHolder{ TextView tv_name; TextView tv_age; public ViewHolder(View itemView) { super(itemView); tv_name = (TextView) itemView.findViewById(R.id.name); tv_age = (TextView) itemView.findViewById(R.id.age); } }}
Kotlin写的适配器HomeKtAdapter.kt
/** * HomektAdapter * Created by chen_yong on 2017/5/24. */ class HomeKtAdapter(mContext: Context, private val persons: List<Person>) : RecyclerView.Adapter<HomeKtAdapter.ViewHolder>() { private val inflater: LayoutInflater = LayoutInflater.from(mContext) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder(inflater.inflate(R.layout.home_item, parent, false)) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val person = persons[position] holder.tv_name.text = person.name holder.tv_age.text = person.age.toString() } override fun getItemCount(): Int { return persons.size } inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var tv_name: TextView = itemView.findViewById(R.id.name) as TextView var tv_age: TextView = itemView.findViewById(R.id.age) as TextView }}
- 效果展示
从下面图就可以体现出安全性,字段为空不做判断也不会报错
点击Demo下载
阅读全文
1 0
- Kotlin初步代码编写
- Kotlin基础教程-代码编写约定
- 在android studio用kotlin来编写代码(三)
- Kotlin初步使用
- Kotlin 初步学习
- 初步尝试kotlin
- Kotlin 初步学习
- Kotlin-初步认识
- Kotlin的初步使用
- linux内核代码的编写初步以及makefile的配置
- kotlin初步使用(1)
- 对 Kotlin 的初步了解
- 对 Kotlin 的初步了解
- Kotlin编写你的HelloKotlin
- Android Studio编写Kotlin程序
- Kotlin编写RecyclerView的Adapter
- kotlin代码教程
- 用Kotlin简化代码
- 什么是DQL、DML、DDL、DCL
- 如何在vs studio中使用代码云托管
- 时钟向量简介
- 小流量 AB 测试能做吗?能!
- (部分原创)unity项目开发中VR工程的优化(上)
- Kotlin初步代码编写
- 输出二叉树某一层的所有结点
- java基础--循环结构for,while和do..while的区别
- 关于JavaScript中constructor属性的灵活使用
- Centos装完MySQL模块后还是报 No module named MySQLdb错误
- (97)蓝图函数
- Kotlin 踩坑日记(一)Kotlin Dagger2 配置使用
- UIPickerView设置字体的方法
- 如何识别分割凹多边形