Android:ViewHolder 模式和不同类型的行?

Posted

技术标签:

【中文标题】Android:ViewHolder 模式和不同类型的行?【英文标题】:Android: ViewHolder pattern and different types of rows? 【发布时间】:2011-01-06 02:19:49 【问题描述】:

ViewHolder 模式提高了 ListView 滚动帧率,如下例所示: https://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html

是否可以在为不同的行使用不同类型的视图时保持这种模式?

换句话说,是否可以执行以下操作:

 public View getView(int position, View view, ViewGroup parent)   
     // calculate viewID here
     if (view == null || *view is not null but was created from different XML than viewID* )  
         view = mInflater.inflate(viewId, null);  

【问题讨论】:

【参考方案1】:

是的,不过最好在适配器中覆盖 getViewTypeCount()getItemViewType()。这将教会 Android 的对象池在 getView() 中只将正确类型的一行返回给您。

【讨论】:

同时,我将所需信息作为标志添加到 ViewHolder,它可以工作

以上是关于Android:ViewHolder 模式和不同类型的行?的主要内容,如果未能解决你的问题,请参考以下文章

Android-进一步封装ViewHolder

笔记·ListView使用技巧

在 ViewHolder 模式中将 ViewHolder 设为静态对于性能至关重要吗?

封装使用ViewHolder模式的Adapter组件,及用其快速实现聊天界面

ViewHolder 中的 kotlin-android-extensions

Android - 在 onCreateViewHolder(..) 中将数据传递给 ViewHolder 构造函数