我有一个RecyclerView
其中项目是LinearLayout
与几个TextViews
作为孩子。根据一些规则(这在onBindViewHolder
中决定),TextViews
可能被隐藏(可见性GONE)或显示。RecyclerView隐藏/显示他们的孩子的项目
我的问题是,如果我有例如在RecyclerView
中有3个项目(A,B和C),其中TextViews
的可见数目相同,A位于列表的顶部,B在中间,C在底部,如果例如B必须显示比以前更多的TextViews
,则在短时间内该项目(B)将与C重叠,因为它已经增大并且必须容纳先前可见度为GONE的新的可见的TextViews
。
可视化表示:
理想状况
当前的和不需要的情况
RecyclerView
有点容易正确地容纳物品。
我该如何避免发生这种情况?
编辑:
在评论的一个建议,我可能有动画和转换的观点我自己。这是必要的还是有另一种方式呢?如果是这样,我该如何动画和转换观点?
编辑2:
试过这样的回答:Animating items,但问题仍然存在。有一个可见的延迟,直到RecyclerView
更新。
EDIT 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);
}
}
试着让'TextViews'' INVISIBLE'而不是'GONE'。 – sonictt1
你可以发布你的代码显示发生了什么?如果数据发生变化,您应该能够简单地调用recyclerView.getAdapter()。notifyDataSetChanged();并且它应该正确重绘recyclerView。 – LNI
@LNI我这样做,但如上所述,问题出现在短时间内(我猜'RecyclerView'更新),然后它正确呈现。 – OneEyeQuestion