Activity部分,xml部分就是一个简单的RecycleView
var mData = ArrayList<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //查找控件 val recycleView = findViewById<RecyclerView>(R.id.recyCleview) //设置排列方式 recycleView.layoutManager = LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false) //给集合添加数据 getDate() val adapter = KotlinRecycleAdater(mData,this) recycleView.adapter = adapter //RecycleView的点击事件 adapter!!.setOnKotlinItemClickListener(object : KotlinRecycleAdater.IKotlinItemClickListener{ override fun onItemClickListener(position: Int) { Toast.makeText(applicationContext,mData!![position],Toast.LENGTH_SHORT).show() } }) } private fun getDate(){ for(i in 0..20){ mData!!.add("我是数据"+i) } }
然后是Adapter部分,切记创建时候要创建Kotlin的.kt文件,不能创建之前的.java文件,
不然没法用kotlin,Adapter里面也就是一个TextView
class KotlinRecycleAdater() : RecyclerView.Adapter<KotlinRecycleAdater.MyViewHolder>(){ private var list : ArrayList<String>? = null private var context : Context? = null private var itemOnClick : IKotlinItemClickListener? = null constructor(list : ArrayList<String>?,context: Context) : this() { this.list = list this.context = context } override fun onCreateViewHolder(p0: ViewGroup, p1: Int): MyViewHolder { var view = LayoutInflater.from(context).inflate(R.layout.recycleview_item,p0,false) return MyViewHolder(view) } override fun getItemCount(): Int { return list?.size!! } override fun onBindViewHolder(p0: MyViewHolder, p1: Int) { p0?.text?.text = list!![p1] p0.itemView.setOnClickListener{ itemOnClick!!.onItemClickListener(p1) } } class MyViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){ var text : TextView = itemView.findViewById(R.id.text_item) } //自定义接口 interface IKotlinItemClickListener { fun onItemClickListener(position: Int) } // 提供set方法 fun setOnKotlinItemClickListener(itemClickListener: IKotlinItemClickListener) { this.itemOnClick = itemClickListener } }
这样一个RecycleView就完成了,要多low有多low哈哈。