ListAdapter: захватить элемент или itemPos во фрагменте - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующий фрагмент, который имеет RecyclerView и ListAdapter пользователей:

....
private fun setupList(users: List<User>) {
    recyclerView.layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
    val adapter = UsersAdapter {
        Toast.makeText(context, "Clicked", Toast.LENGTH_SHORT).show()
    }

    recyclerView.adapter = adapter
    adapter.submitList(users)
}
....

Вот соответствующая часть UsersAdapter:

....
class FlightItemViewHolder(itemView: View, _context: Context) : RecyclerView.ViewHolder(itemView) {
    val context = _context

    fun bind(item: User, clickListener: (User) -> Unit) {

        itemView.name_value.text = item.fullName
        itemView.country_value.text = item.country
        itemView.seats_value.text = item.subscriptionSeats.toString()

        itemView.setOnClickListener { clickListener(item) }
    }
}
....

Тост показывает нормально, но я бы хотел получить элемент, по которому щелкнули, или его позицию, чтобы вызвать и показать фрагмент Detail (вместо того, чтобы показывать тост).

1 Ответ

0 голосов
/ 06 февраля 2019

Вы должны изменить свой обратный вызов на подобное

val adapter = UsersAdapter { user ->
    Toast.makeText(context, "Clicked $user", Toast.LENGTH_SHORT).show()
}
...