【发布时间】:2019-11-29 03:52:06
【问题描述】:
我已经在我的 Recyclerview 中实现了一个 onclick 侦听器,但是当我单击第一项时,我一直收到 IndexOutOfBoundsException,但一切正常,但是在第一次之后我得到错误
当我点击第二个项目时,我得到了这个错误
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
第二个这个
java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
等等等等
我的适配器是这样的
class VendorAdapter(private val vendorModel: List<Vendor>) : RecyclerView.Adapter<VendorAdapter.VendorView>() {
private lateinit var listener: OnItemClickListener
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VendorView {
val view = LayoutInflater.from(parent.context).inflate(R.layout.row_vendor, parent, false)
return VendorView(view, vendorModel, listener)
}
override fun onBindViewHolder(holder: VendorView, position: Int) {
val vendor = vendorModel[position]
holder.vendorName.text = vendor.name
Picasso.get()
.load(vendorModel[position].img_url)
.fit()
.centerCrop()
.into(holder.vendorImage)
holder.vendor = listOf(vendor)
}
override fun getItemCount(): Int {
return vendorModel.size
}
class VendorView(itemView: View, var vendor: List<Vendor>, listener: OnItemClickListener) : RecyclerView.ViewHolder(itemView) {
val vendorImage: ImageView = itemView.findViewById<View>(R.id.vendor_image) as ImageView
val vendorName: TextView = itemView.findViewById(R.id.vendor_name)
init {
itemView.setOnClickListener {
val position: Int = adapterPosition
listener.onItemClick(vendor[position])
}
}
}
interface OnItemClickListener{
fun onItemClick(vendor: Vendor)
}
fun setOnItemClickListener(listener: OnItemClickListener){
this.listener = listener
}
}
这就是我在片段中的称呼
vendorAdapter?.setOnItemClickListener(object : OnItemClickListener {
override fun onItemClick(vendor: Vendor) {
Log.e(TAG,"Clicked")
}
})
【问题讨论】:
标签: android kotlin android-recyclerview