//MainActivity
package com.example.helloworld.kotlinstudy
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val adapert = KotlinRecAdapter(this,getData()!!)
rlv.layoutManager= LinearLayoutManager(this)
rlv.adapter=adapert
adapert.setOniteClickListener(object :KotlinRecAdapter.OnItemClickLitener{
override fun onItemClick(position: Int) {
Toast.makeText(this@MainActivity,"点击"+position,Toast.LENGTH_LONG).show();
}
})
}
fun getData():ArrayList<String>{
val arrayList = ArrayList<String>()
val list = listOf<String>("星期一", "星期二", "星期三", "星期五", "星期一", "星期一", "星期一", "星期一", "星期一")
//for循环
for (k in list){
arrayList.add(k)
}
return arrayList
}
}
//KotlinRecAdapter适配器
package com.example.helloworld.kotlinstudy
import android.content.Context
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
class KotlinRecAdapter(mCtx: Context, mList:ArrayList<String>) :RecyclerView.Adapter<KotlinRecAdapter.MHolder>(){
//可以把数据直接放到类名后面,然后用变量接收
private var context:Context = mCtx
private var list:ArrayList<String> = mList
override fun onBindViewHolder(holder: MHolder?, position: Int) {
// holder?.txtName? 都必须加个?号才可以调用 ?表示可以为空
holder?.txtName?.text=list.get(position)
holder?.linearlayout?.setOnClickListener {
litener?.onItemClick(position)
}
}
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MHolder {
return MHolder(LayoutInflater.from(context).inflate(R.layout.kotlin_item,parent,false))
}
override fun getItemCount(): Int {
return list.size
}
class MHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) {
//这里需要从前面一个一个写 直接写itemView.调用是不行的
var txtName: TextView = itemView!!.findViewById(R.id.tv) as TextView;
var linearlayout: LinearLayout = itemView!!.findViewById(R.id.linearlayout) as LinearLayout;
}
interface OnItemClickLitener {
fun onItemClick(position : Int)
}
var litener:OnItemClickLitener? =null
fun setOniteClickListener(litener : OnItemClickLitener ){
this.litener=litener
}
}