为什么这些 recyclerview 项目没有填满他们的观点?

Why are these recyclerview items not filling their views?

我在 SwipeRefreshLayout 内的 NestedScrollView 内有一个水平 RecyclerView。据推测,这是错误的原因。当我加载数据时,children 显示正常,但是一旦我滚动到最后并重新滚动,children 就没有填充他们的视图。

In action

我找到了很多关于如何使用布局约束、不同的 parent 视图类型和更改焦点来解决此问题的不同建议,但问题仍然存在。 onBindViewHolder 肯定会被调用,但由于某种原因绑定没有发生?

这个奇怪的发生是因为回收器视图的回收过程,所有在绑定视图(在视图持有者中)编写的布局代码将在回收时被忽略,为了解决它,添加这段代码:

RecyclerView.setRecyclerListener(new RecyclerView.RecyclerListener() {
            @Override
            public void onViewRecycled(RecyclerView.ViewHolder holder) {
                    ((BusinessChildViewHolder) holder).onBind();
                    // onBind method inside your holder and it just applies the layout changes that you need
            }
        });

发现问题:在我的 viewholder 中,我将某些布局设置为不可见,并且由于视图被回收,它们没有显示。我所要做的就是将它们设置为可见。

来自这个解决方案