Kotlin为ListView设置setOnClickListener

8
我有如下代码:
class BookListActivity : AppCompatActivity()
{

    var array = arrayOf("Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11")

    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.book_list)

        val adapter = ArrayAdapter(this, R.layout.book_list_item, R.id.book_title, array)
        val listView : ListView = findViewById(R.id.book_list)
        listView.adapter = adapter    
    }
}

我需要为ListView上的每个元素添加一个点击监听器。
我尝试了以下代码,但没有效果:
listView.setOnItemClickListener
{
    val intent = Intent(this, BookDetailActivity::class.java)
    startActivity(intent)
}

另外,我需要知道我点击了哪个ListView元素。我该如何做到这一点?
2个回答

19

你需要处理 AdapterView.OnItemClickListener 的所有参数。

你的监听器应该像这样:

listView.setOnItemClickListener { parent, view, position, id -> 
    val element = adapter.getItemAtPosition(position) // The item that was clicked
    val intent = Intent(this, BookDetailActivity::class.java)
    startActivity(intent)
}

我宁愿使用parent.getItemAtPosition(position) - AW5

5
尝试使用此解决方案来处理listview的项单击监听器。
listView.setOnItemClickListener = AdapterView.OnItemClickListener {parent,view, position, id ->
          // Get the selected item text from ListView
          val selectedItem = parent.getItemAtPosition(position) as String

          val intent = Intent(this, BookDetailActivity::class.java)
          startActivity(intent)
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接