android - 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 的信息,谢谢大家的帮助。
解决方案
而不是简单地在点击时传递位置,只需将名称传递给 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) } }
这是粗略的实现,我想这应该给你一个想法。
这是一个粗略的例子,分享你的完整代码来帮助你模式
推荐阅读
- c - 有没有办法为 CS50 Cash 问题集 1 运行以下代码
- spring-aop - 来自 ExceptionHandler 的 @AfterReturning 不起作用
- css - 如何使用 CSS 创建虚线以在 ReactJS 中按行显示数据?
- flutter - 运行滑动启动后模棱两可的导入
- python - 将 OpenCV 的帧移动到 Tkinter 时 Python 中的内存错误和属性错误
- python - 使用对应的列名将两个 pandas 数据帧相乘
- python - 错误网页抓取页面没有重新连接,但可以重新启动
- graphql - 有没有办法使用特定查询打开 graphql 游乐场?
- python - 如果行值已包含在前一个值中,则过滤该行值
- javascript - 在paper.js中定义相对于现有矩形的矩形位置