RecyclerView[new]

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
    }
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值