【问题标题】:Can i have multiple recyclerviews with same item layout?我可以有多个具有相同项目布局的回收站视图吗?
【发布时间】:2021-06-10 19:19:57
【问题描述】:

我有不同的屏幕使用 recyclerview,但它们的项目布局非常相似。项目布局基本上是一个文本视图和一个图像。图片是一样的,永远不会改变,textview的样式是一样的,但是文本会改变,因为它来自api。

我开始为每个 recyclerview 使用相同的项目布局,因为它非常相似,但我不知道如何使其工作以及是否会花费太多时间

【问题讨论】:

  • 请用代码示例描述您的问题到目前为止您尝试了什么。
  • 当然,为什么不呢?您只需要单独的适配器。您甚至可以通过将项目类型设置为接口来将其抽象出来并使用通用适配器。
  • 我认为我不需要解释更多,但我会这样做
  • @Tenfour04 有人告诉我,当我转到另一个屏幕时,我需要从另一个屏幕隐藏该字段
  • 但这不是两个并排的recyclerviews。在回收站视图中有不同的屏幕使用完全相同的项目布局。这是一个相同的文本视图和一个不变的图像。唯一改变的是来自 api 的 textview。

标签: android kotlin android-layout android-recyclerview


【解决方案1】:

以下是更改显示内容的最简单方法。您可以从父类的适配器的构造函数中传递一个布尔值。

例如,如果为真,则显示一些数据。如果它是假的,你可以显示一些其他的数据。

class RecyclerAdapter(var displayUserData: Boolean) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {...}

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = values[position]
        if(displayUserData){
            holder.textView.text = item.name
        }else{
            holder.textView .text = item.otherStuff
        }
    }

    inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {...}
}

然后设置适配器的真假

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val adapter = RecyclerAdapter(true)
}

【讨论】:

    猜你喜欢
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多