【问题标题】:RecyclerView reusing variables inside custom viewRecyclerView 在自定义视图中重用变量
【发布时间】:2020-04-14 03:49:40
【问题描述】:

我正在创建一个自定义 ExpandableTextView 以在 RecyclerView 中使用。

class ExpandableTextView : AppCompatTextView, View.OnClickListener {

    private var isCollapsed = true
    ...

自定义视图本身可以工作,但是当在 RecyclerView 中使用时,展开状态也与 ViewHolder 一起回收。我怀疑 var isCollapsed 也被重用了。如何让 RecyclerView 正确显示 TextView 及其展开状态?我可以让我的变量不被重用吗?

请帮助我找到一些解决方案。任何答案都会有很大帮助!

编辑:我添加了a gif 以澄清。当我单击第一个 TextView 时,最后一个也会展开。抱歉,我还不能发布图片!

【问题讨论】:

  • 您希望一次只有一个展开视图?
  • @OhhhThatVarun 我的意思是首先展开第一个 TextView,然后滚动 RecyclerView 以加载新数据。加载下一个 TextView,比如第 7 个,也像第一个一样展开。

标签: android android-recyclerview android-custom-view


【解决方案1】:

您可以执行以下操作将变量 isCollapsed 公开,以便您可以从外部更改它

class ExpandableTextView : AppCompatTextView, View.OnClickListener {

    var isCollapsed = true
    ...

你的适配器

override fun onBindViewHolder(viewHolder :YourViewHolder, position:Int) {
    viewHolder.expandleTextView.isCollapsed = true
// Rest of your code
}

【讨论】:

  • 谢谢,它有效! Btw isCollapsed 可以设置为 true 以使那些 TextView 默认折叠
  • 是的,我改了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多