首页 > 解决方案 > java.lang.IndexOutOfBoundsException:索引:2,大小:0 ArrayList Kotlin

问题描述

我通过单击从回收器视图项中获取数据,但我有空的 ArrayList。我试过使用 List、MutableList 还是什么都没有。如何解决这个问题?

 private var list: List<City> = ArrayList()


 override fun onCityClick(position: Int) {
    list.get(position).name
    val intent = Intent(this, CityActivity::class.java)
    startActivity(intent)
    Log.e("SA onCityClick", list[position].name)
}

解决方案: 问题出在我的空列表中。我没有通过空列表,这就是我的问题的原因。我正在为此粘贴我的解决方案:

override fun onCityClick(position: Int) {
    searchViewModel.getAllCities().observe(this, Observer { list ->
        list?.let { cities == list }
        Log.e("SA getAllCities", list[position].name)
        list.get(position)
  })
    val intent = Intent(this, CityActivity::class.java)
    startActivity(intent)
}

很抱歉没有粘贴有关 MVVM 的信息,谢谢大家的帮助。

标签: androidkotlinandroid-recyclerview

解决方案


而不是简单地在点击时传递位置,只需将名称传递给 onCityclick。将您的适配器更新为类似

// In main class in you adapter implementation add below code
Adapter(args) { name: String -> //  name :your logic goes here}

在适配器类中

RAdapter(val ..arhs, val listner: onClicklistner ) { 
onBindVIEw { holder.view.clicklistner { listner.event(name) } }

这是粗略的实现,我想这应该给你一个想法。

这是一个粗略的例子,分享你的完整代码来帮助你模式


推荐阅读