kotlin RecyclerViewAdapter IndexOutOfBoundException

我已经从Java转移到Kotlin并创建这个rec​​yclerViewAdapter:

class MisPedidosAdapter(private val context: Context, private var pedidos: List<ParseObject>?, private val onMisPedidosClickListener: OnMisPedidosClickListener) : CustomRecyclerViewAdapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { when(getItemViewType(viewType)){ STATIC ->return NoMisPedidosHolder(LayoutInflater.from(parent.context).inflate(R.layout.no_pedidos_recibidos_item, parent, false)) else -> return MisPedidosHolder(LayoutInflater.from(parent.context).inflate(R.layout.mis_pedidos_item, parent, false), onMisPedidosClickListener, pedidos) } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (getItemViewType(position) == STATIC) { val mHolder = holder as NoMisPedidosHolder } else { val mHolder = holder as MisPedidosHolder val pedido = pedidos!![position] val menuShop = pedido.getParseObject("menu_shop") mHolder.numPlati.text = pedido.getNumber("quantity")?.toInt().toString() mHolder.horario.text = pedido.getString("horario") mHolder.dateOrder.text = StringUtils.getDataFormatted("dd MMM yyyy", pedido.createdAt!!) } } override fun getItemViewType(position: Int): Int = when{ pedidos!!.isEmpty() -> STATIC else -> DINAMIC } override fun getItemCount(): Int = when{ pedidos!!.isEmpty() -> 1 else -> pedidos!!.size } fun updatePedidos(pedidos: List<ParseObject>) { this.pedidos = pedidos notifyDataSetChanged() } companion object { private val STATIC = 0 private val DINAMIC = 1 } } 

问题是,当我在Kotlin中做list.size ,它也包含了size索引(例如,如果size是4,那么就考虑{0,1,2,3,4})。 当我使用循环时,我可以锁定{0,1,2,3} until ,但在这种情况下,我不知道该怎么做。 任何人都知道解决方法吗? 谢谢

用这个

 override fun getItemCount(): Int = when{ pedidos!!.isEmpty() -> 0 else -> pedidos!!.size } 

为此而感到高兴

 override fun getItemCount(): Int = when{ pedidos!!.isEmpty() -> 1 else -> pedidos!!.size } 

你将不得不更换

  when(getItemViewType(viewType)){ 

  when(viewType){