当我们在RecyclerView中拥有异构视图时,它如何处理回收? 例如,在以下代码中,我们创建了3种不同类型的视图,以便在回收站视图中使用。 现在,在这些观点被夸大之后,recyclerView如何知道不将这些视图用于位置1& 2其余项目?
in the x direction for the y axis
答案 0 :(得分:3)
RecyclerView基本上保留了多个View对象池,getItemViewType返回的每个值都有一个池。当它需要新项目的视图时,它首先调用getItemViewType。然后它转到相应的池中以获得该结果(如果不存在则创建一个新的)并从中获取视图。它会记住屏幕上每个视图的类型。当视图从屏幕上循环时,它将返回到正确的池中。
答案 1 :(得分:0)
我没有完全回答你的问题。以下是RecyclerView
如何运作的解释:
RecyclerView.Adapter
保留了一组视图。虽然可能,但它将使用其中一个空实例。当它不可能时(池是空的)它将创建一个新的。但是这个池如何变空?
当视图附加到ReciclerView
时,只有当您不显示该视图时,它才会从池中删除以再次添加回来 - >您应该重置视图中的所有内容的原因。
所以基本上RecyclerView对你的观点一无所知。它将使用新的View,或者尽可能使用从适配器中的池中获取的Recycled。然后在onBindViewHolder
中夸大你所说的观点。如果视图中包含某些属性,如颜色或文本或其他任何属性,如果您不重置它,它将保留在循环视图中。
修改强>
正如Gabe Sechan所说,正确的视图类型由方法getItemViewType(int position)
确定,该方法返回要充气的正确视图类型。
答案 2 :(得分:0)
Recycler视图有一个方法 在该方法中创建视图时,您将获得从(从get viewitem类型)返回的相同视图类型,并且在创建视图中,只需实现与get item type方法相同的检查。 在创建视图中,只需将视图传递给视图持有者的对象,如同 查看类型。只是尝试采取差异。查看不同视图的持有者