问题描述
当我在适配器的绑定视图持有者中引用资源字符串值时,我收到以下错误:
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 (将#修改为@)