1

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?

0 Answers0