无法从回收者视图的适配器获取资源字符串

问题描述

当我在适配器的绑定视图持有者中引用资源字符串值时,我收到以下错误

2021-03-01 14:56:14.390 28009-28009/ E/AndroidRuntime: FATAL EXCEPTION: main
    Process:,PID: 28009
    java.lang.IllegalAccessError: Field 'com.example.ui.screens.history.PaymentHistoryVH.itemView' is inaccessible to class 'com.example.ui.screens.history.PaymentHistoryAdapter' (declaration of 'com.example.ui.screens.history./base.apk!classes2.dex)
        at com.example.ui.screens.history.PaymentHistoryAdapter.onBindViewHolder(PaymentHistoryAdapter.kt:40)
        at com.example.ui.screens.history.PaymentHistoryAdapter.onBindViewHolder(PaymentHistoryAdapter.kt:15)
        at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
        at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at 

我的适配器:

class PaymentHistoryAdapter (private val onSelected: Consumer<ChargeModel>) : RecyclerView.Adapter<PaymentHistoryVH>() {

    private val items = mutablelistof<ChargeModel>()

    override fun getItemCount() = items.size

    override fun onCreateViewHolder(parent: ViewGroup,viewType: Int) =
        LayoutInflater.from(parent.context).inflate(R.layout.item_history,parent,false)
                .let { PaymentHistoryVH(it) }
                .also {
                    handleClick(it)
                }

    private fun handleClick (holder : PaymentHistoryVH) {
        holder.root.setonClickListener {
            val pos = holder.adapterPosition
            if (pos != RecyclerView.NO_POSITION) {
                onSelected.accept (items[pos])
            }
        }
    }

    override fun onBindViewHolder(holder: PaymentHistoryVH,position: Int) {
        holder.type.text = convertChargeType(items[position].type)
        holder.date.text = getDate(items[position].date,"dd/MM/yyyy")
        holder.price.text = holder.itemView.resources.getString(R.string.item_mb_price,formatPrice(items[position].total))
        holder.qoute.text = items[position].bytes?.let { formatQuoteMb(it) }
    }

    fun setData(data: List<ChargeModel>) {
        items.clear()
        items.addAll(data)
        notifyDataSetChanged()
    }
}

我的资源文件

<string name="item_mb_price">%1$s\u20ac</string>

但是在我的其他适配器中,我可以毫无问题地访问相同的资源字符串,有人可以帮助我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)