When i reffer to resource string value in on bind view holder of my adapter i get following error:
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
My adapter :
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()
}
}
my resorce file :
<string name="item_mb_price">%1$s\u20ac</string>
But in my other adapters i can access the same resource string without problem, can anybody help me?