RecyclerViewAdapterで2番目のモデルの位置を取得するにはどうすればよいですか

Aug 23 2020

これは私の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++    
        
    }

}

}

問題は、ボタンを押すと商品の量が増えることです...このためには各アイテムの位置が必要ですが、私の商品の最初のモデル(override fun getItemCount():Int = product.size)が取得しました新しいモデルに必要な位置(val newitem:List)。

このコードvalproductpos = newitem.positionを試してみたところ、サイズが1で、インデックスも1であるというエラーが表示されました...修正方法がわかりません。ちょうど今、私は新しいモデルのポジションが必要です。新しいポジションを取得する方法は?

回答

afhamu Aug 23 2020 at 23:03

これを試して:

val productpos = newitem.get(position)

次に、合計サイズを取得します。

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