ViewHolder对象将每个组件视图存储在标记内 布局的字段,因此您可以立即访问它们而不需要 需要反复查找它们。首先,您需要创建一个类 保持您的确切观点。例如:
static class ViewHolder {
TextView text;
TextView timestamp;
ImageView icon;
ProgressBar progress;
int position;
}
答案 0 :(得分:8)
这对于性能来说并不重要,它与使用有关。如果ViewHolder
类不是静态的 - 您必须提供父类的实例:
No enclosing instance of type Type is accessible.
Must qualify the allocation with an enclosing instance of type Type
(e.g. x.new A() where x is an instance of Type).
答案 1 :(得分:1)
编辑:误解了这个问题 - 似乎你在具体询问如何制作它static
。这不应该对性能至关重要,但这个想法有点帮助。
最终编辑:Static nested class in Java, why?
====
以下原始答案:
从繁重的ListView(或其他类型的回收的 AdapterView)中挤出性能非常好。然而,最好的方法是以某种方式描述性能。
同样在 Google IO 2010 时,他们会推荐这种方法:
http://www.youtube.com/watch?v=wDBM6wVEO70
编辑:
此处还有指向 traceview 的链接以描述效果,但我不确定它的效果如何。
http://developer.android.com/tools/debugging/debugging-tracing.html
答案 2 :(得分:-3)
这不是必须的。但是,当您使用这样做时,您在适配器视图为空时再次使用视图。您正在创建视图并为视图部件指定值,并使用静态类ViewHolder标记整个视图。因此,当您返回并且视图不为空时,可见部分将来自获取标记。这就是如何创建更少的对象以及减少适配器上的工作量。