Поиск…


Вступление

Производительность ваших приложений является ключевым элементом пользовательского интерфейса. Старайтесь избегать плохих моделей, таких как работа над потоком пользовательского интерфейса и научиться писать быстрые и гибкие приложения.

Сохранить просмотр с помощью шаблона ViewHolder

Особенно в ListView вы можете столкнуться с проблемами производительности, выполняя слишком много вызовов findViewById() во время прокрутки. Используя шаблон ViewHolder , вы можете сохранить эти поисковые запросы и улучшить производительность ListView .

Если элемент списка содержит один TextView , создайте класс ViewHolder для хранения экземпляра:

static class ViewHolder {
    TextView myTextView;
}

При создании элемента списка присоедините объект ViewHolder к элементу списка:

public View getView(int position, View convertView, ViewGroup parent) {
    Item i = getItem(position);
    if(convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);

        // Create a new ViewHolder and save the TextView instance
        ViewHolder holder = new ViewHolder();
        holder.myTextView = (TextView)convertView.findViewById(R.id.my_text_view);
        convertView.setTag(holder);
    }

    // Retrieve the ViewHolder and use the TextView
    ViewHolder holder = (ViewHolder)convertView.getTag();
    holder.myTextView.setText(i.getText());
   
    return convertView;
}

Используя эту модель, findViewById() будет вызываться только тогда , когда новый View создаются и ListView может гораздо более эффективно переработать свои взгляды.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow