【问题标题】:How to hide an item from Recycler View on a particular condition in android [duplicate]如何在android中的特定条件下隐藏Recycler View中的项目[重复]
【发布时间】:2021-04-06 02:09:50
【问题描述】:

如何在特定条件下从 Recycler View 隐藏项目?

在条件的其他部分给出以下条件 holder.constraintLayoutAccounts.setVisibility(View.GONE);

constraintLayoutAccounts 是适配器 xml 宽度作为匹配父项和高度作为包装内容的布局

视图不可见,但显示空间,知道如何摆脱空间

我需要隐藏列表中的最后一项,任何想法都会有所帮助

感谢任何帮助

【问题讨论】:

  • 在 onBindViewHolder 中,您可以通过可见性获得该行
  • 当我使用可见性时它显示空间
  • 请添加您的 onBindViewHolder 和隐藏项目的方法。
  • 您必须完全使用根视图的可见性。您可以通过视图持有者对象获取根视图
  • 请分享您的xml代码

标签: android


【解决方案1】:

将您的条件放在 onBindViewHolder 中。你会得到你想要的输出。

【讨论】:

  • 当我使用可见性时它显示空间
【解决方案2】:

假设您想在 RecyclerView 中隐藏项目 #0。然后在适配器中,您应该为getItemCount() 返回itemCount - 1。在您的onBindViewHolder() 中,您将了解从数据源(例如数组)中获取哪些数据项的条件。

class MyAdapter : RecyclerView.Adapter<CardsViewAdapter.ViewHolder>() {
  val data: List<DATA> = listOf(...)
  var showItem = true
  
  override fun getItemCount(): Int = if (showItem) data.size else data.size - 1

  override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val correctedPosition = if (showItem) position else position - 1

    // Do stuff
  }
}

简而言之,RecyclerView 您不会隐藏项目视图,而是从适配器中排除数据。此外,您可能需要调用 notifyDataSetChanged() 来强制重新渲染它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多