【问题标题】:ListAdapter: grab item or itemPos in fragmentListAdapter:在片段中抓取 item 或 itemPos
【发布时间】:2019-02-06 11:33:51
【问题描述】:

我有以下片段,其中有一个 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) }
    }
}
....

toast 显示正常,但我想获取单击的元素或其位置,以便调用并显示 Detail 片段(而不是显示 toast)。

【问题讨论】:

  • 你在点击监听器中传递你的项目,当你在活动中实现监听器时应该能够得到它。

标签: android kotlin listadapter


【解决方案1】:

你必须把你的回调改成那样

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

【讨论】:

  • 谢谢,看来我在 Kotlin 知识方面还有一些漏洞 ;-)
猜你喜欢
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多