Kotlin : ListView用法
ListView布局
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
适配器
class MyAdapter : BaseAdapter {
var context:Context?=null
var list:ArrayList<Food>?=null
constructor(context: Context,list :ArrayList<Food>){
this.context=context
this.list=list
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? {
var viewHolder:ViewHolder?=null
var view:View?=null
if(convertView==null){
view=View.inflate(context,R.layout.item,null);
viewHolder=ViewHolder()
viewHolder.imageView=view.findViewById(R.id.tupian)
viewHolder.textView1=view.findViewById(R.id.wenzhi)
view.tag=viewHolder
}else{
view=convertView
viewHolder=view!!.tag as ViewHolder
}
Glide.with(context).load(list!![position].pic).into(viewHolder.imageView)
viewHolder.textView1!!.text= list!![position].name
return view
}
override fun getItem(position: Int): Any? {
return null;
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getCount(): Int {
return list!!.size
}
inner class ViewHolder{
var imageView:ImageView?=null
var textView1:TextView?=null
}
}
注意:Kotlin语言中 对象不需要使用new关键词
实现代码
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var list: ArrayList<Food> = ArrayList()
var mRunnable = Runnable {
run {
//URL可直接使用readText方法读取json串
var s = URL("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1").readText()
var jsonObject = JSONObject(s)
var optJSONArray = jsonObject.optJSONArray("data")
for(i in 0 ..optJSONArray.length()-1 step 1 ){
var jsonObject1 = optJSONArray.getJSONObject(i)
var string =jsonObject1.getString("pic")
var name =jsonObject1.getString("title")
var food=Food(name,string)
list?.add(food)
}
list1.adapter=MyAdapter(this,list)
}
}
Thread(mRunnable).start()
}
实现效果: