今年的IO大会Google正式将kotlin成为官方支持的语言,今天来使用kotlin写一个简单的listview。
首先对这个新的语言我个人而言是比较感兴趣的。官方说的那些我在这儿就不说了。
这里有官方中文文档有兴趣的可以自己看一下。
我个人感觉多开发者而言,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就完成了。是不是很方便?
在这中有一个问题是需要注意的