Kotlin入坑(二)先写个小项目
来源:互联网 发布:海报设计 知乎 编辑:程序博客网 时间:2024/06/05 18:03
上一篇 Kotlin入坑(一) 中搜集了一些现在网上的kotlin的学习资料,因为感觉kotlin跟java基本的编程思路都是一样的,只是语法上面的不同,于是将上面的资料大体看完就开始着手写个小项目练练手。
小项目地址 https://github.com/chsmy/DouBanKotlin
项目进行的过程中又一次印证了编程世界里,要想写好程序,一定得多敲多练。很多东西看一遍是看懂了,但是真的去写的时候,脑中还是一片空白。遇到问题也是一脸懵逼,还得去查文档。虽然做个简单的小项目也可以起到练习的目的。但是毕竟是小项目,只能涵盖部分的知识点。所以,下面的计划还得将其文档捋一遍,练习一遍。
这篇先记录一下小项目开发中的小知识点
(1)
使用kotlin开发android项目,首先你发现的一个简便的地方就是在也不用写findViewById了。只要我们在xml中给一个控件定义了一个id,就可以在activity或者fragment中直接使用那个id来操作了
比如xml中定义一个RelativeLayout搜索框
<RelativeLayout android:id="@+id/relative_search" android:layout_width="match_parent" android:layout_height="36dp" android:background="@drawable/search_background" android:gravity="center_vertical" android:layout_marginLeft="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:drawablePadding="10dp" android:drawableStart="@drawable/ic_search" android:gravity="center" android:text="@string/search_hint"/> </RelativeLayout>
那么activity或者fragment中我们就可以直接这么写
relative_search.setOnClickListener{ val intent = Intent(context, SearchActivity::class.java) context.startActivity(intent) }
不用findViewById 直接使用id操作就可以,是不是简洁呢。
不过我们平时写xml的时候,经常会把一些能够复用的布局提出来,然后使用include标签来引入,这个时候如果你使用引入的布局中的id来操作发现无法使用。
其实当我们使用id直接操作的时候。IDE自动帮我们引入了一个包
“import kotlinx.android.synthetic.main.find_fragment.*”
语句中最后的find_fragment就是我们的fragment或者activity所对应的布局。如果我们想找到include标签引入的布局中的id也要把这个布局引入比如
“import kotlinx.android.synthetic.main.search_bar_text.*”
search_bar_text就是我们include引入的布局这样我们又可以愉快的使用id来操作了
(2)
我们平时开发一个andorid工程各种点击事件是经常要写的。比如setOnClickListener,以前我们使用的时候,
relative_search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });
到了kotlin中没有new关键词了,那匿名内部类怎么写呢kotlin中的匿名内部类使用object关键词。
relative_search.setOnClickListener(object : View.OnClickListener{ override fun onClick(v: View?) { } })
kotlin对Lambda表达式支持的很好。可以直接如下写
relative_search.setOnClickListener{ }
是不是很简单。
上面的监听方法中只有一个参数,如果是多个参数
mAdapter!!.setOnItemClickListener(object : BaseQuickAdapter.OnItemClickListener{ override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) { } })
mAdapter!!.setOnItemClickListener { adapter, view, position -> } }
这样写我们的代码是不是很清晰啊。
上面这两点都是kotlin中的最基础的知识点,所以说在学习一个新的语言的时候,学会练熟它的基础很重要。就比如我们知道这个地方需要写一个匿名内部类,但是这个语言的匿名内部类 怎么写呢我知道,还得去查文档。当遇到另外的问题的时候,还不知道,还得去查文档。虽然差文档或者百度可以解决问题,但是这样做项目的时候断断续续无疑会很影响心情。
(3)
服务器返回的json数据转化成实体类无疑是个很费时并且没啥技术的苦力活,以前都是使用studio插件GsonFormat来自动生成。一开始我是先建一个java工程,然后使用GsonFormat生成实体类,在复制道kotlin的实体类对象中。使用IDE翻译。但是这样翻译过来的并不是最佳的,有很多的冗余。后来一想,kotlin中应该也有插件啊,然后一搜索果然有它就是JsonToKotlinClass,又可以愉快地开发了
- Kotlin入坑(二)先写个小项目
- Kotlin入坑(五)类和继承二
- 从开源项目,入坑Kotlin
- Kotlin入坑(一)学习资料
- Kotlin入坑(六)函数
- Kotlin 入坑半年总结
- Kotlin入坑(三)基本识点
- Kotlin入坑(四)类和继承一
- 入坑集锦(二)
- Kotlin语法(二)
- kotlin学习(二)
- Kotlin学习(二)
- 初识Kotlin(二)
- Kotlin基础(二)
- Kotlin学习(二)Hello Kotlin
- Kotlin笔记二(Kotlin基础)
- 使用Kotlin开发Android项目(二)
- 使用Kotlin开发Android项目-Kibo(二)
- 转换为二进制的补码
- shell脚本例子
- Makefile经典教程(掌握这些足够)
- 神经网络中的超级参数
- iOS开源控件,UI效果实现资源站点
- Kotlin入坑(二)先写个小项目
- jdk编译版本和运行版本不符
- js 封装时间戳为时间格式
- mock数据的应用
- git difftool for mac
- Docker部署(二):MySQL数据库
- Java StringBuffer与StringBuider
- 【Android Studio】eclipse项目导入Android Studio
- C#winform 选择的文件是解决方案文件,但是用此应用程序的较新版本创建的,无法打开(低版本的VS无法打开高版本项目)