Lit*_*ild 1 android android-listview
我的事件管理应用程序在列表视图中有两种类型的视图:一个用于不那么重要的事件的简单文本视图和一个用a创建的复杂视图FrameLayout.
在onCreateView()适配器中,我根据事件的性质返回这些视图.
if(convertView == null){
if(important)
// inflate the complex view
else
// inflate the simpler view
}
Run Code Online (Sandbox Code Playgroud)
convertView为null 时,这一切都很好.由于Android中的视图回收,可能会发生convertView返回给我的回收从更简单的视图,我现在必须显示更大的视图.一个愚蠢的解决方案是不断膨胀新的观点.但是,这会扼杀性能.
另一种方法是TextView在两个(visibility=gone)中使用预定义的值来隐藏s,并根据它们中的值,我可以膨胀视图.对我来说,这似乎是一个黑客而不是一个真正的解决方案.
处理这种情况的正确方法是什么?
由于Android中的视图回收,可能会发生返回给我的convertView从更简单的视图中回收,现在我必须显示更大的视图.
如果您覆盖getViewTypeCount()并getItemViewType()在适配器中,则不会.
在你的情况下:
getViewTypeCount() 会回来2
getItemViewType() 将返回0或1,其中对于作为一种类型的行的那些位置返回0,对于返回另一种类型的行的位置返回1
然后,如果convertView不是null,则保证它是正确类型的行.
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |