我通过单击从回收器视图项中获取数据,但是我有空的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的信息,谢谢大家的帮助。
答案 0 :(得分:1)
与其简单地传递点击位置,不如将名称传递给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) } }
这是一个粗略的实现,我想这应该会给您一个想法。
这是一个粗糙的示例,请分享您的完整代码以帮助您进行模式
答案 1 :(得分:0)
替换这个,希望这可以解决您的问题
override fun onCityClick(position: Int) {
if(list !=null && list.size>position){
list.get(position).name
val intent = Intent(this, CityActivity::class.java)
startActivity(intent)
Log.e("SA onCityClick", list[position].name)
}
}else{
Log.e("SA onCityClick", "Size- "+list.size+" -Pos- "+ position)
}