【问题标题】:Recycler view item disappearing回收站视图项目消失
【发布时间】:2021-12-30 09:16:43
【问题描述】:

我对回收站视图有疑问。正如您在下面的代码中看到的那样,我实现了一个折叠逻辑。但是当我关闭第二个项目时,视图会消失,正如您在 video 上看到的那样。我究竟做错了什么。请协助。谢谢

 public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.report_layout, viewGroup, false);

    final ReportHolder holder = new ReportHolder(v);

    //hide half of the view
    holder.linearLayout.setVisibility(View.GONE);

    holder.tvPrintReceipt.setVisibility(View.INVISIBLE);

    holder.tvClose.setOnClickListener(v1 -> {
        TransitionManager.beginDelayedTransition(viewGroup, new AutoTransition());
        holder.linearLayout.setVisibility(View.GONE);
        holder.tvViewRecords.setVisibility(View.VISIBLE);
    });

    holder.tvViewRecords.setOnClickListener(v2 ->{
        TransitionManager.beginDelayedTransition(viewGroup, new AutoTransition());
        holder.linearLayout.setVisibility(View.VISIBLE);
        holder.tvViewRecords.setVisibility(View.GONE);
    });

    return holder;
}

【问题讨论】:

    标签: android kotlin android-layout android-recyclerview


    【解决方案1】:

    为了不出现问题,您应该将整个项目的可见性设置为 GONE。 itemView.setVisibility(View.GONE); 要么 view.setVisibility(View.GONE);

    还可以查看此线程以获取更多信息How to hide an item from Recycler View on a particular condition?

    【讨论】:

      【解决方案2】:

      这个问题的原因是你在onCreatViewHolder 中编写了你的​​逻辑,它将被调用一次,你必须将它移动到onBindViewHolder,它将在 RecyclerView 中的每个项目中调用。这将解决您的问题。现在,单击每个项目,对列表中的所有项目进行更改。

      【讨论】:

      • 我将逻辑移到 onBindViewHolder ,但仍然没有工作,然后我添加了 notifyItemChange(),所以现在当我折叠第二个项目时它并没有消失。但现在的问题是第一项现在没有展开,当您单击视图记录展开文本时,它会展开第二项。
      • 请分享您的适配器的整个逻辑,然后我可以提供帮助。因为仅在与数据相关时通知项目的更改才很重要。
      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2015-07-16
      相关资源
      最近更新 更多