我有这样的代码
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 ,请从适配器中删除它,不要隐藏它。为什么要隐藏而不是删除是有原因的?