使用kotlin写一个ListView

今年的IO大会Google正式将kotlin成为官方支持的语言,今天来使用kotlin写一个简单的listview。



首先对这个新的语言我个人而言是比较感兴趣的。官方说的那些我在这儿就不说了。


这里有官方中文文档有兴趣的可以自己看一下。


https://www.kotlincn.net/


我个人感觉多开发者而言,kotlin绝对是一个值得学习的语言,它的体量很小,而且在使用的时候很方便。比如通常我们在做一个findViewById();的操作的时候即使有注解也无非就是注解帮我们生成这句或者是

@BindView(R.id.imageView_img)
ThumbnailView imageViewImg;
我通常是用这种,但是在kotlin中无需注解或其他任何东西直接使用你view中声明的id根本不需要任何findViewById()的操作,你就可以直接定位到这个控件,还有在你使用Toast的时候,通常我们Toast一个String类型的字符串时需要将其拼接,但在kotlin中你只需将这个字符在加入到 " " 时,在 "$str" ,其中str是变量名,这样直接将str中的值传递过去。

Toast.makeText(this, "$str", Toast.LENGTH_SHORT).show()

其他的就不多说了,今天来写一个listview。



下面是事例代码,比较简单就不做过多的解释了。


package cn.com.testkliton

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_kliton.*
import java.util.*

class KlitonActivity : Activity() {

    private varitemList= ArrayList<String>()
    private varadapter: TestAdapter? =null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kliton)
        itemList.getData()
        adapter= TestAdapter(itemList, this)
        listView.adapter=adapter
    }

    funArrayList<String>.getData() {
        for(iin0..20) {
            this.add("str:"+ i)
        }
    }

    classTestAdapter(vallist: ArrayList<String>, valcontext: Context) : BaseAdapter() {
        override fungetCount(): Int {
            returnlist.size
        }

        override fungetView(position: Int,convertView: View?,parent: ViewGroup?): View {
            varholder: TestViewHolder
            varv: View
            if(convertView ==null) {
                v = View.inflate(context,R.layout.list_item, null)
                holder = TestViewHolder(v)
                v.tag= holder
            } else{
                v = convertView
                holder = v.tagasTestViewHolder
            }
            holder.str.text=list[position]
            returnv
        }

        override fungetItem(position: Int): Any? {
            returnlist.get(position)
        }

        override fungetItemId(position: Int): Long {
            returnposition.toLong()
        }


    }

    classTestViewHolder(varviewItem: View) {
        varstr: TextView =viewItem.findViewById(R.id.item_txt)asTextView
    }
}



这样一个简单的listview就完成了。是不是很方便?


在这中有一个问题是需要注意的

使用kotlin写一个ListView