Для производительности важно, чтобы ViewHolder был статичным в шаблоне ViewHolder?
Для производительности важно, чтобы ViewHolder был статичным в шаблоне ViewHolder?
Объект ViewHolder хранит каждый вид компонентов внутри тега поля макета, поэтому вы можете немедленно получить к ним доступ без нужно искать их повторно. Во-первых, вам нужно создать класс для удерживайте свой точный набор просмотров. Например:
static class ViewHolder {
TextView text;
TextView timestamp;
ImageView icon;
ProgressBar progress;
int position;
}
Ответы
Ответ 1
Это не важно для производительности, это касается использования. Если класс 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).
Ответ 2
Изменить: неправильно понял вопрос - кажется, вы спрашиваете конкретно о его создании static
. Это не должно иметь решающего значения для производительности, но идея все-таки помогает.
Final здесь: Статический вложенный класс в Java, почему?
====
Ответ на источник ниже:
Очень приятно сжимать производительность из тяжелого ListView (или другого типа переработанного AdaptViewView). Однако лучшим способом сказать было бы как-то профилировать производительность.
Также в Google IO 2010 они рекомендуют этот метод:
http://www.youtube.com/watch?v=wDBM6wVEO70
Edit:
Также здесь ссылка на traceview, чтобы профиль производительности, хотя я не уверен, насколько хорошо он работает.
http://developer.android.com/tools/debugging/debugging-tracing.html
Ответ 3
Это не обязательно. Но когда вы используете это, вы снова используете представления, когда представление вашего адаптера равно null. Вы создаете представление и присваиваете значения части представления и помещаете весь вид, используя статический класс ViewHolder. Поэтому, когда вы вернетесь, и представление не равно null, из него будет получена видимая часть, чтобы получить тег. Таким образом вы создадите меньше объектов, а также меньшую нагрузку на адаптер.