某些时候RecyclerView可能会有几种不同的内容呈现形式。比如相册应用中Album以及Image这两种不同的呈现形式,点击Album可以查看其Images。可能会出于某种考虑,欲将这两种内容用同一个Adapter呈现。

假设AlbumImage使用不同的ViewHolder,那么当进入或退出Album时,该怎么使之重新绑定对应的ViewHolder呢?仅仅使用notifyDataSetChanged()是无法强制重新绑定ViewHolder的。此时,需要借助getItemViewType()来实现之。当notifyDataSetChanged()之后,某个position对应的viewType变了,则会重新绑定ViewHolder

因此,实现对应的getItemViewType(),使两种情况下返回的viewType不同即可。