Come posso ottenere la posizione per il secondo modello in RecyclerView Adapter

Aug 23 2020

Questo è il mio codice dell'adattatore RecyclerView

class RecyclerAdapterMain(

val product: ArrayList<ModelProductMain>,

val viewmodel: ViewModelRoom,

val newitem: List<ModelItemsNew>

) :

RecyclerView.Adapter<RecyclerAdapterMain.ViewHolder>() {


class ViewHolder(itemview: View) : RecyclerView.ViewHolder(itemview) {


    val title: TextView = itemview.product_txt
    val price: TextView = itemview.price_product
    val imageproduct: ImageView = itemview.product_image
    val btn_add_product: Button = itemview.btn_add_product
    val amount_value: TextView = itemview.amount_value
    val button_remove_product: Button = itemview.button_remove_product


}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {


    val layoutview =
        LayoutInflater.from(parent.context).inflate(R.layout.product_items, parent, false)
    return ViewHolder(layoutview)

}

override fun getItemCount(): Int = product.size


override fun onBindViewHolder(holder: ViewHolder, position: Int) {


    val products = product[position]
    holder.title.text = products.title
    holder.price.text = products.price.toString()
    Picasso.get().load(products.image).into(holder.imageproduct)


    holder.itemView.setOnClickListener {

        val bundle = Bundle()
        val myfragment = ItemDetailsfragment()
        myfragment.arguments = bundle


        val activity = it.context as AppCompatActivity
        activity.supportFragmentManager.beginTransaction()
            .replace(R.id.homepage, myfragment)
            .commit()


        bundle.putString("title", products.title)
        bundle.putString("price", products.price.toString())
        bundle.putString("image", products.image.toString())


    }

    holder.amount_value.visibility = View.GONE
    holder.button_remove_product.visibility = View.GONE
    holder.btn_add_product.setOnClickListener {

        holder.amount_value.visibility = View.VISIBLE
        holder.button_remove_product.visibility = View.VISIBLE

            holder.amount_value++    
        
    }

}

}

il problema è che voglio che quando si preme il pulsante la quantità di prodotto aumenti ... per questo ho bisogno della posizione di ogni articolo ma il primo modello del mio prodotto (override fun getItemCount (): Int = product.size) ottenuto la posizione di cui ho bisogno per il mio nuovo modello (val newitem: List).

Ho provato questo codice val productpos = newitem.position e mi da l'errore che la dimensione è 1 e anche l'indice è 1 ... non so come risolverlo. proprio ora che mi serve la posizione per un nuovo modello. come ottenere una nuova posizione?

Risposte

afhamu Aug 23 2020 at 23:03

Prova questo:

val productpos = newitem.get(position)

e quindi ottieni la dimensione totale:

override fun getItemCount(): Int = product.size + newitem.size