Kotlin版本的新闻类APP 简闻

最近在学习一点Kotlin相关的知识,发现Kotlin在编写Android应用上具有得天独厚的优势,也难怪Google会将Kotlin作为Android的官方语言。使用Kotlin开发App确实会事半功倍。小伙伴们前期稍微注意一点就会很快入门的,当然我现在也只是一个基本的入门,后面的路还很长很长。也是出于一种学习的姿态,简单编写了一个资讯类的app。稍后会给出这个应用的链接。

学习Kotlin的记录:

(1)Kotlin跟Java有很多相似之处,从Java转向Kotlin是一件比较容易的事,Koltin遵循Java中的类的一些基本概念。

我们从最基本的说起。Kotlin新建变量类似于Java Script中的变量新建 val  a=10 var b=“hello” 这点区别于我们的Java,还有就是kotlin这边不强制使用分号作为结尾。这是Kotlin新建变量注意的地方。

(2)、Kotlin中的方法,Kotlin中方法定义如下:fun method(){}  类似这个样子,这里也是跟java中有点区别的,大家可以自行感悟。

(3)、Kotlin中的继承不再向我们Java中的 extends 关键字,而是使用了 :    比如  class a : b{} 这样,同样实现接口也是这样子来书写。

.....................当然区别还是有很多的,我们下面说一些跟Android相关的吧

(1)、使用Kotlin 就意味着告别了繁琐的findViewbyId,在Kotlin中可以直接以控件的id来进行一些事件。

(2)、Kotlin中已经简化了get跟set一些操作,对于java中的bean类,Kotlin可以如下书写bean类:

package com.ekwing.jianwenapp.bean

import java.io.Serializable

  class NewData : Serializable {

    var reason: String? = null
    var result: ResultBean? = null
    var error_code: Int = 0

    class ResultBean : Serializable {
  
        var stat: String? = null
        var data: List<DataBean>? = null

        class DataBean : Serializable {
         
            var uniquekey: String? = null
            var title: String? = null
            var date: String? = null
            var category: String? = null
            var author_name: String? = null
            var url: String? = null
            var thumbnail_pic_s: String? = null
            var thumbnail_pic_s02: String? = null
            var thumbnail_pic_s03: String? = null
        }
    }
}

  (3)、Kotlin里的点击事件也相较于java变得简洁起来,我们看下代码:

override fun onClick(v: View?) {
        when (v!!.id) {
            android.R.id.home -> draw_layout.openDrawer(Gravity.RIGHT)
        }
    }

(4)、Kotlin里设置适配器

  rv_list.layoutManager = GridLayoutManager(this, 2)
            rv_list.adapter = MyRecyclerViewAdapter(
                this,
                dataNews.result!!.data as ArrayList<NewData.ResultBean.DataBean>
            )
            (rv_list.adapter as MyRecyclerViewAdapter).notifyDataSetChanged()

(5)、Kotlin里的接口回调

  sendOkHttpRequest(url, object : Callback {
            override fun onFailure(call: Call, e: IOException) {

            }

            override fun onResponse(call: Call, response: Response) {
                val mGson = Gson()
                dataNews =
                    mGson.fromJson<NewData>(
                        response.body()?.string(),
                        object : TypeToken<NewData>() {
                        }.type
                    )

(6)、Kotlin里的数据传递

 val intent =Intent(context,Main2Activity::class.java)
                intent.putExtra("title", alist[position].title)
                intent.putExtra("image", alist[position].thumbnail_pic_s)
                intent.putExtra("url", alist[position].url)
                context.startActivity(intent)
  val title = intent.getStringExtra("title")
        val image = intent.getStringExtra("image")
        val content = intent.getStringExtra("url")

(7)、Kotlin里的静态方法


class HttpClient {

    companion object{
        fun sendOkHttpRequest( url : String,callback: okhttp3.Callback){
            val okHttpClient=OkHttpClient()
            val request = Request.Builder()
                .url(url)
                .build()
            okHttpClient.newCall(request).enqueue(callback)
        }
    }
}

好吧,我自己也不知所云,那就看看做的小demo吧

上几个截图:

  demo的地址  https://github.com/haibowen/NewSeleter

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值