notifyDataSetChanged () вопрос производительности и когда / как вызывать в связи с пакетом изменений данных - PullRequest
1 голос
/ 26 октября 2010

У меня есть ArrayList пользовательских объектов, которые являются данными, лежащими в основе ArrayAdapter для ListView.

Иногда эти данные изменяются в пакете, например при получении набора новых элементов из Интернета.Когда данные изменяются в пакете, следует вызывать notifyDataSetChanged () после каждого добавления () в ArrayList

Некоторые из-за упрощенного кода:

for(Object object : newObjects){
   list.add(object);
   adapter.notifyDataSetChanged();
}

Должен ли он вызываться один раз после добавления всех элементов в пакете?

for(Object object : newObjects){
    list.add(object);
}
adapter.notifyDataSetChanged()

Скажем, есть партия из 50 новых объектов.Если сразу за другим будет выполнено 50 вызовов notifyDataSetChanged (), как в первом примере, будет ли представление перерисовываться 50 раз подряд (я думаю, что это сильно повлияет на производительность) или оно будет выполнять только последний вызов и в некотором смысле только перерисовыватьих один раз?

Мне в основном интересно, смогу ли я использовать первый метод или он окажет значительное влияние на производительность?

Спасибо

1 Ответ

0 голосов
/ 26 октября 2010

Когда вы вызываете notifyDataSetChanged (), он не перерисовывает представление немедленно. Это зависит от контроллера потока пользовательского интерфейса, чтобы знать, когда перерисовать. Хотя кажется мгновенным. Вы должны попробовать и посмотреть, есть ли проблемы с производительностью. Мы действительно не можем ответить на это для вас. Если имеет смысл обновлять список только после всех добавлений, сделайте это.

...