ViewHolder
模式的目的是帮助回收视图。如果在我的列表中我对每一行都有不同的布局。在我的例子中,我有一个GridView
,其中包含两行中的6个元素。每个元素都有完全不同的布局,并呈现其他内容。在这种情况下,我还有什么理由可以实现ViewHolder
吗?
答案 0 :(得分:2)
始终调用findViewbyId()
方法来引用布局中的窗口小部件会大大降低应用程序性能。为了平滑滚动ListView
或RecyclerView
,需要使用ViewHolder
,这会缩短参考时间并有助于平滑滚动。
根据您的问题,如果每行的布局不同,则需要为每个布局创建单独的ViewHolder
个对象。然后,当您向其中填充数据时,您需要确定当前位置需要使用哪个ViewHolder
。这可能会使您的代码变得有点复杂,但它可以显着提高应用程序性能。
有关ViewHolder的更多信息,请访问以下链接:Hold View Objects in a View Holder
答案 1 :(得分:1)
当您覆盖geitemviewtype时,ListView保证为该类型的数据传递正确的convertview。 GetTag也可以正常使用多种视图类型,并且仍然会一直阻止调用getItemById,从而提高性能。所以在我看来:是的,你仍然应该使用视图模式。