You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在安卓开发中将RecyclerView与Activity类绑定?附代码参考

RecyclerView与自定义类绑定实现方案

核心逻辑说明

RecyclerView本身只负责列表视图的回收复用,你需要通过*自定义实体类 + 适配器(Adapter)*完成数据类和列表项的绑定,具体实现步骤如下:

步骤1:定义对应业务的自定义数据类

这是你要和列表绑定的实体类,存储每一个列表项需要的所有字段:

// 示例:对应你当前的图片列表场景,可根据实际需求调整字段
data class ImageItem(
    val imageUri: String, // 图片地址
    val createTime: Long, // 图片创建时间
    val remark: String // 图片备注
)

步骤2:完善ImageAdapter,关联自定义数据类

你已经在Activity中初始化了ImageAdapter,需要在Adapter内部声明对应数据类的数据集,完成数据和视图的绑定逻辑:

class ImageAdapter : RecyclerView.Adapter<ImageAdapter.ImageViewHolder>() {
    // 数据集,类型为你自定义的ImageItem类列表
    var dataList = mutableListOf<ImageItem>()
        set(value) {
            field = value
            // 数据更新时通知列表刷新
            notifyDataSetChanged()
        }

    // ViewHolder绑定列表项布局
    inner class ImageViewHolder(val itemBinding: ItemImageBinding) : RecyclerView.ViewHolder(itemBinding.root)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ImageViewHolder {
        val binding = ItemImageBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return ImageViewHolder(binding)
    }

    override fun onBindViewHolder(holder: ImageViewHolder, position: Int) {
        val currentItem = dataList[position]
        // 将自定义类的字段和布局控件一一绑定
        holder.itemBinding.ivDisplay.setImageURI(Uri.parse(currentItem.imageUri))
        holder.itemBinding.tvTime.text = SimpleDateFormat("yyyy-MM-dd").format(Date(currentItem.createTime))
        holder.itemBinding.tvRemark.text = currentItem.remark
    }

    override fun getItemCount() = dataList.size
}

注:ItemImageBinding对应你自己创建的RecyclerView单条列表项的布局绑定类,替换为你实际的布局名即可。

步骤3:在EditActivity1中完成最终关联

在你代码中的init()方法内补充以下逻辑,完成RecyclerView、Adapter、自定义类数据集的绑定:

private fun init() {
    // 1. 给RecyclerView设置布局管理器(必选项,不设置无法渲染内容)
    mBinder.recyclerView.layoutManager = LinearLayoutManager(this)
    // 2. 绑定已初始化的Adapter
    mBinder.recyclerView.adapter = imageAdapter
    // 3. 构造你的自定义类数据集,替换为实际业务的数据源即可
    val imageList = mutableListOf<ImageItem>()
    // 示例:添加测试数据
    imageList.add(ImageItem("content://media/external/images/media/1001", System.currentTimeMillis(), "风景图"))
    imageList.add(ImageItem("content://media/external/images/media/1002", System.currentTimeMillis() - 86400000, "人像图"))
    // 将数据集传给Adapter,自动刷新列表
    imageAdapter.dataList = imageList
}

内容的提问来源于stack exchange,提问作者user16801724

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:48:05