Tengo el siguiente código:
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 } }Necesito agregar un detector de clics para cada elemento en listView.
He intentado lo siguiente pero no funciona:
listView.setOnItemClickListener { val intent = Intent(this, BookDetailActivity::class.java) startActivity(intent) }También necesito saber en qué elemento ListView he hecho clic. ¿Cómo puedo hacer esto?
Tienes que manejar todos los parámetros para AdapterView.OnItemClickListener
Su oyente debería verse así:
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) }Pruebe esta solución para el elemento de vista de lista, haga clic en el oyente.
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) }