如何让数据回收视图解析其他更新活动?

时间:2021-05-17 07:49:03

标签: android-recyclerview

我在 ListBukpotAdapter 中有代码,如何获取数据 listener.OnClick(currentItem) 以解析其他 UpdateActivity

错误:

kotlin.UnitializedPropertyAccessExeption:lateinit 属性监听器尚未初始化

class ListBukpotAdapter : RecyclerView.Adapter<ListBukpotAdapter.MyViewHolder>() {

    private var bukpotList = emptyList<QrResultBukpot>()

    private lateinit var listener: OnAdapterListener

    interface OnAdapterListener {
        fun OnClick(bukpotDataParsing: QrResultBukpot)
    }

    class MyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {}

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.custom_row_bukpot, parent, false))
    }

    override fun getItemCount(): Int {
        return bukpotList.size
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        val currentItem = bukpotList[position]
        holder.itemView.txtNomorBukpot.text = currentItem.nomorBukpot
        holder.itemView.txtNpwpPemotong.text = currentItem.npwpPemotong
        holder.itemView.txtMasaPajak.text = currentItem.masaPajak + " / " + currentItem.tahunPajak
        holder.itemView.txtMixCode.text = currentItem.mixCode

        holder.itemView.rowLayoutBukpot.setOnClickListener {
            listener.OnClick(currentItem)

            val context =  holder.itemView.context
            val intent = Intent(context, UpdateBukpotActivity::class.java)
            context.startActivity(intent)
        }
    }

    fun setDataBukpot(bukpot: List<QrResultBukpot>){
        this.bukpotList = bukpot
        notifyDataSetChanged()
    }

}

1 个答案:

答案 0 :(得分:0)

你应该初始化你的听众。你的监听器变量是 lateinit 所以在你使用它之前,你需要初始化。您可以从您的活动或片段中将侦听器作为构造函数参数提供,并且可以从包含 recyclerview 的活动或片段中侦听接口。