首页 > 解决方案 > 是否可以让 recyclerview/listview 导航到不同的屏幕?

问题描述

因此,我看过许多 Kotlin recyclerview 教程,但是它们似乎都基于项目评论/联系人列表,当您选择它们​​时,它们都会将您带到同一个屏幕,尽管具有不同的查看器内容。我想知道是否可以使用独立的 recyclerview/listview 进行导航,而不是使用似乎不适合广泛目录的导航抽屉。如果是这样,那里有任何教程吗?

基本上是这样的:

标签: kotlinandroid-recyclerview

解决方案


在你的adapter中,你可以在onBindViewHolder中你的RecyclerView中的每个视图上设置一个标签,在点击监听器中,你可以获取标签并根据它是哪个标签来操作。

你可以让你的 RecyclerView 适配器扩展View.onClickListener

override fun onBindViewHolder(holder: OpportunityViewHolder, position: Int) {
  // Differentiate between items by having a base class that you implement for your different items
  val item = getItem(position)
  item.tag = when(item) {
    is ThisThing -> "thisThing"
    is ThatThing -> "thatThing"
    is AnotherThing -> "anotherThing"
  }
}

override fun onClick(v: View) {
  when(v.tag) {
    "thisThing" -> // do something
    "thatThing" -> // something else... 
}

当然,您可能希望将枚举用于标记可能性,或常量值,甚至使用类名

enum class Tag {
  THIS_THING, THAT_THING...
}

companion object {
  private const val THIS_THING = "THIS_THING"
  ...
}

// Inside classes
companion object {
  val name = ThisThing::class.simpleName
  ...
}

推荐阅读