class Item(var name:String,var imageId:Int){
}
class myAdapter(val list: List<Item>) :
RecyclerView.Adapter<myAdapter.ViewHolder>(){
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val Image: ImageView = view.findViewById(R.id.iv)
val Name: TextView = view.findViewById(R.id.tv)
}
// 继承RecyclerView.Adapter<myAdapter.ViewHolder>(),要重写下面的方法
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): myAdapter.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.myitem, parent, false)
var viewHolder = ViewHolder(view)
// 创建viewholder实例
viewHolder.itemView.setOnClickListener {
// 对外层item注册点击事件
val position = viewHolder.adapterPosition
val fruit = list[position]
Toast.makeText(parent.context, "you clicked view ${fruit.name}",
Toast.LENGTH_SHORT).show()
}
viewHolder.Image.setOnClickListener {
// 对图片注册点击事件
val position = viewHolder.adapterPosition
val fruit = list[position]
Toast.makeText(parent.context, "you clicked image ${fruit.name}",
Toast.LENGTH_SHORT).show()
}
// 注册点击事件
return viewHolder
}
override fun onBindViewHolder(holder: myAdapter.ViewHolder, position: Int) {
val data = list[position]
holder.Image.setImageResource(data.imageId)
holder.Name.text = data.name
// 传递数据
}
override fun getItemCount(): Int {
return list.size
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
val list = ArrayList<Item>()
for(i in 1..10){
list.add(Item("1",R.drawable.ic_launcher_background))
list.add(Item("2",R.drawable.ic_launcher_foreground))
}
val recyclerView = findViewById<RecyclerView>(R.id.rv)
val layoutManager = StaggeredGridLayoutManager(3,
StaggeredGridLayoutManager.VERTICAL) // 设置瀑布流滚动方式
//val layoutManager = LinearLayoutManager(this) 设置布局管理器,默认为竖直方向滚动
// layoutManager.orientation = LinearLayoutManager.HORIZONTAL 设置水平滚动模式
recyclerView.layoutManager = layoutManager
val adapter = myAdapter(list)
recyclerView.adapter = adapter
}
}
RecyclerView[new]
最新推荐文章于 2024-07-25 16:05:51 发布