【问题标题】:How to change an another item's state in a RecyclerView in android如何在 android 的 RecyclerView 中更改另一个项目的状态
【发布时间】:2019-03-02 06:41:41
【问题描述】:

我有一个 RecyclerView。每个布局本身都包含展开视图。 随着项目点击展开被点击项目的视图被展开。如果我单击两个项目,我的 RecyclerView 中将有两个项目具有扩展视图。我需要通过单击项目来关闭其他项目的展开视图。只有一项具有展开展开视图的项目必须在回收站中。

我怎样才能做到这一点?

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.exp.collapse();
    holder.itemView.setOnClickListener(v -> {
        holder.exp.expand();
    });

【问题讨论】:

  • 你能发布处理项目扩展的代码吗?
  • 好故事!嗯
  • 怎么了?))
  • 嘿,OP,试试这个solution
  • 这里只是在黑暗中拍摄,但也许创建一个全局变量来保存您的holder,并且每次点击 onClickListerner 时,在当前持有者和全局持有者之间进行检查。如果它们不同,请在全局/旧持有者上调用 exp.collapse()

标签: android android-recyclerview


【解决方案1】:

保存先前展开位置的位置在列表对象中创建一个属性,例如一些布尔值 isOpen 或在单击新行时根据需要将其设置为 false 或 true

list.get(prevPosition).setIsOpen(false);

然后

notifyItemChanged(prevPosition);

确保您在 bindViewHolder 中处理了类似的事情

if(list.get(postition).getIsOpen()==false){
//hide your expanded list
}

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多