Android Kotlin 开发--初体验Demo

来源:互联网 发布:网络写手已成高危职业 编辑:程序博客网 时间:2024/06/06 05:54

1. 先上效果图

2. 配置

配置就省了,网上有很多配置的博客,我也有一篇专门讲as如何配置的博客Kotlin初体验

3.代码部分

Main2Activity.kt

package com.example.kotlinimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.support.v7.widget.LinearLayoutManagerimport android.view.Viewimport android.widget.Toastimport kotlinx.android.synthetic.main.activity_main2.*class Main2Activity : AppCompatActivity(), OnItemClick {    private var data = ArrayList<String>()    private var adapter: MyAdapter? = null    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main2)        adapter = MyAdapter()        adapter!!.add(getData())        val manager = LinearLayoutManager(application)        recyclerView.layoutManager = manager        recyclerView.adapter = adapter        adapter!!.setItemClick(this)    }    fun getData(): List<String> {        for (i in 1..100) {            data!!.add("我是标题" + i)        }        return data    }    override fun onItemClick(view: View, postion: Int) {        Toast.makeText(applicationContext, "我是第" + postion + "个", Toast.LENGTH_SHORT).show()    }}

MyHolder.kt

package com.example.kotlinimport android.support.v7.widget.RecyclerViewimport android.util.SparseArrayimport android.view.Viewimport android.widget.TextView/** * 作者:Tangren on 2017/5/22 12:46 * 邮箱:wu_tangren@163.com * TODO:一句话描述 */class MyHolder(itemView: View, click: OnItemClick) : RecyclerView.ViewHolder(itemView), View.OnClickListener {    var textView: TextView    private var click: OnItemClick? = null    init {        textView = itemView.findViewOften(R.id.textView)        this.click = click        itemView.setOnClickListener(this)    }    fun <T : View> View.findViewOften(viewId: Int): T {        var viewHolder: SparseArray<View> = tag as? SparseArray<View> ?: SparseArray()        tag = viewHolder        var childView: View? = viewHolder.get(viewId)        if (null == childView) {            childView = findViewById(viewId)            viewHolder.put(viewId, childView)        }        return childView as T    }    override fun onClick(v: View?) {        if (v != null) {            click!!.onItemClick(v, adapterPosition)        }    }}

MyAdapter.kt

package com.example.kotlinimport android.support.v7.widget.RecyclerViewimport android.view.LayoutInflaterimport android.view.ViewGroup/** * 作者:Tangren on 2017/5/22 12:45 * 邮箱:wu_tangren@163.com * TODO:一句话描述 */class MyAdapter : RecyclerView.Adapter<MyHolder>() {    var list: List<String> = ArrayList<String>()    var click: OnItemClick? = null    fun add(list: List<String>) {        this.list = list    }    override fun onBindViewHolder(holder: MyHolder?, position: Int) {        holder!!.textView.setText(list!!.get(position))    }    override fun getItemCount(): Int {        return list!!.size    }    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyHolder {        val view = LayoutInflater.from(parent!!.getContext()).inflate(R.layout.item_holder_view, parent, false)        val holder = MyHolder(view, click!!)        return holder    }    fun setItemClick(click: OnItemClick) {        this.click = click    }}

OnItemClick.kt

package com.example.kotlinimport android.view.View/** * 作者:Tangren on 2017/5/22 15:08 * 邮箱:wu_tangren@163.com * TODO:一句话描述 */interface OnItemClick {    fun onItemClick(view: View, postion: Int)}

3.总结

Demo相对简单,但是主要是体会精神,简洁的无可挑剔!
项目下载地址