Подтвердить что ты не робот

Для производительности важно, чтобы ViewHolder был статичным в шаблоне ViewHolder?

Для производительности важно, чтобы ViewHolder был статичным в шаблоне ViewHolder?

Объект ViewHolder хранит каждый вид компонентов внутри тега поля макета, поэтому вы можете немедленно получить к ним доступ без нужно искать их повторно. Во-первых, вам нужно создать класс для удерживайте свой точный набор просмотров. Например:

static class ViewHolder {
  TextView text;
  TextView timestamp;
  ImageView icon;
  ProgressBar progress;
  int position;
}
4b9b3361

Ответ 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, из него будет получена видимая часть, чтобы получить тег. Таким образом вы создадите меньше объектов, а также меньшую нагрузку на адаптер.