我有一个 RecyclerView
,其中的项目是一个 LinearLayout
,其中有几个 TextViews
作为子项。根据某些规则(这在 onBindViewHolder
中决定),TextViews
可能会被隐藏(可见性消失)或显示。
我的问题是,如果我在 RecyclerView
中有 3 个项目(A、B 和 C),它们具有相同数量的可见 TextViews
,并且 A 在顶部在列表中,B 在中间,C 在底部,例如,如果 B 必须显示比以前更多的 TextViews
,则在很短的时间内,此项目 (B) 将与 C 重叠,因为它尺寸变大了,必须容纳新的可见 TextViews
,之前可见性已消失。
问题的可视化表示:
期望的情况
当前和不希望的情况
片刻之后,RecyclerView
正确地容纳了项目。
我怎样才能避免这种情况发生?
编辑:
其中一条评论建议我可能必须自己制作动画并转换 View 。这是必要的还是有另一种方法?如果是这样,我怎样才能对 View 进行动画处理和转换?
编辑 2:
试过这个答案:Animating items ,但问题依然存在。在 RecyclerView
更新之前有明显的延迟。
编辑 3:
我正在使用此类 ( RecyclerViewCursorAdapter) 作为填充 RecyclerView
的适配器的基础。此外,我在 onResume
@Override
public void onResume()
{
super.onResume();
if(getActivity().getSupportLoaderManager().getLoader(R.id.myLoaderId) == null)
{
getActivity().getSupportLoaderManager().initLoader(R.id.myLoaderId, null, this);
}
else
{
getActivity().getSupportLoaderManager().restartLoader(R.id.myLoaderId, null, this);
}
}
最佳答案
关键是使用RecyclerView.ViewHolder 类 的setIsRecyclable() 方法。将此属性设置为 true 为 enter link description here
关于android - RecyclerView 带有隐藏/显示他们的 child 的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538107/