我有这样的代码

public static class MyViewHolder extends RecyclerView.ViewHolder {
    @InjectView(R.id.text)
    TextView label;

    public MyViewHolder(View itemView) {
        super(itemView);
        ButterKnife.inject(this, itemView);
    }

    public void hide(boolean hide) {
        label.setVisibility(hide ? View.GONE : View.VISIBLE);
    }
}

它映射到RecyclerView中的单行。实际上,R.id.text是布局的根 View ,该布局在这里膨胀并传递给构造函数。

我正在使用LinearLayoutManager的默认实现。

bindViewHolder中,我在hide(true)的实例上调用MyViewHolder,但是没有像预期的那样折叠该行,而是使该行变得不可见,并保持其在RecyclerView中的高度和位置。还有其他人遇到这个问题吗?

如何在RecyclerView中隐藏项目?

最佳答案

没有内置的方式可以在RV中隐藏 child ,但是,如果它的高度变为0,则它​​是不可见的:)。我假设您的根目录布局确实有一些最小高度(或精确高度),即使它已经消失了,也仍然需要占用空间。

另外,如果要删除 View ,请从适配器中删除它,不要隐藏它。为什么要隐藏而不是删除是有原因的?

10-07 19:30
查看更多