Warm tip: This article is reproduced from serverfault.com, please click

kotlin-在Android ListVIew上的位置获取项目

(kotlin - Get item at position at Android ListVIew)

发布于 2020-11-28 01:04:15

我正在尝试从单击的项目中检索数据,但我始终为null,因此无法找到解决方案。我的代码:

 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,因此我无法以某种方式检索我的物品,例如,当我打印位置时,我得到了正确的位置,但无法在该位置检索该物品。

Questioner
Yasin Eraslan
Viewed
11
Ankit Gupta 2020-11-28 23:12:09

代码中记录存储在listView适配器中,因此在onItemClickListener中,从适配器中获取项目,如下所示:

adapter.getItem(position)

另一种方法可能是:

(typecast_into_respective_object) parent.getItemAtPosition(position)

这里的parent是setOnItemClickListener中的adapterView对象。