获取位于 Android ListVIew 位置的项目
Get item at position at Android ListVIew
我正在尝试从我单击的项目中检索数据,但我总是得到空值,我找不到解决方案。我的代码:
override fun onStart() {
super.onStart()
val records = RecordDAO(this).findAll().map {
"${it.moduleName} ${it.moduleNum} (%${it.noteInProzent} ${it.creditPoints}crp)"
}
val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,records)
this.recordListView.adapter = adapter
recordListView.setOnItemClickListener { parent, view, position, id ->
var record: Record? = recordListView.getItemAtPosition(position) as? Record
if(record!= null) println(record.moduleName)
else println("rec is null")
intent = Intent(this,EditFormActivity::class.java)
intent.putExtra("record",record)
startActivity(intent)
}
}
每次在 null 检查中它都会打印 null 所以我无法以某种方式检索我的项目,例如当我打印位置时我得到了正确的位置但我无法检索该位置的项目。
您代码中的记录存储在listView适配器中,因此在onItemClickListener中,从适配器获取您的项目,如下所示:
adapter.getItem(position)
另一种方法可能是:
(typecast_into_respective_object) parent.getItemAtPosition(position)
这里parent是setOnItemClickListener中的adapterView对象
我正在尝试从我单击的项目中检索数据,但我总是得到空值,我找不到解决方案。我的代码:
override fun onStart() {
super.onStart()
val records = RecordDAO(this).findAll().map {
"${it.moduleName} ${it.moduleNum} (%${it.noteInProzent} ${it.creditPoints}crp)"
}
val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,records)
this.recordListView.adapter = adapter
recordListView.setOnItemClickListener { parent, view, position, id ->
var record: Record? = recordListView.getItemAtPosition(position) as? Record
if(record!= null) println(record.moduleName)
else println("rec is null")
intent = Intent(this,EditFormActivity::class.java)
intent.putExtra("record",record)
startActivity(intent)
}
}
每次在 null 检查中它都会打印 null 所以我无法以某种方式检索我的项目,例如当我打印位置时我得到了正确的位置但我无法检索该位置的项目。
您代码中的记录存储在listView适配器中,因此在onItemClickListener中,从适配器获取您的项目,如下所示:
adapter.getItem(position)
另一种方法可能是:
(typecast_into_respective_object) parent.getItemAtPosition(position)
这里parent是setOnItemClickListener中的adapterView对象