В первом случае вы разделяете один и тот же адрес памяти элементов массива между двумя ссылками: ticketModels
и ticketModelsUpdated
.Это означает, что вы можете иметь доступ к одним и тем же элементам из двух разных точек входа.
Во втором случае вы создаете одинаковые элементы, используя новый адрес памяти.Это означает, что ticketModels
не разделяет одно и то же пространство памяти с ticketModelsUpdated
.
Несмотря на то, что ticketModelsUpdated
является локальной переменной, выделенная память будет жить, пока не будет ссылки на этот адрес.Таким образом, в моем понимании ticketModels
должен иметь доступ ко всем элементам даже после уничтожения ticketModelsUpdated
.Оба случая должны работать.
РЕДАКТИРОВАТЬ: Похоже, вы привязываете свой адаптер к ссылке ticketModels
, а не к значениям ticketModels
.Вот почему ваш метод ticketModels.clear()
очищает старое выделенное пространство памяти, где был связан ваш адаптер.Таким образом, в первом случае вы меняете ссылку на новое пространство памяти для вашего ticketModels
, в то время как ваш адаптер все еще ссылается на очищенное пространство памяти.А во втором случае вы сохраняете ссылку на старое пространство памяти и заполняете очищенные данные новыми элементами.
Это только мое предположение, поскольку вы не предоставили никакой информации о том, как вы связываете свой адаптер с ticketModels
.