kotlin RecyclerViewAdapter IndexOutOfBoundException
我已经从Java转移到Kotlin并创建这个recyclerViewAdapter:
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){
- java.lang.NoClassDefFoundError $$ intern $ forEach $ lambda $ 1在Kotlin中
- Android:从操作栏的自定义布局中删除左边距
- 如何在android的后台运行一段代码?
- Kotlin lambda有几个参数
- Android:如何把一个枚举放入一个包中?
- 在后台获取最新的片段
- Kotlin:如何使用List转换:未选中Cast:kotlin.collections.List <Kotlin.Any?>转换为kotlin.colletions.List <Waypoint>
- 在创建gradle插件时,把生成的java或kotlin源放到哪里?
- 无法使用RxKotlin更改ActionMenuItemView的文本