Модель содержит ссылку на ArrayList, например, под названием наблюдения
List<StockRealtime> watchList=new ArrayList<>();
MutableLiveData<List> liveData=new MutableLiveData<>();
liveData.postValue(watchList);
модель обертывает его с помощью LiveData, и модель представления хранит жилетные данные и передает их представлению View, RecyclerView содержит операцию удаления одного, добавления одного и других. Поскольку списком является мелкая копия, поэтому при изменении модели watchList представление View получит уведомление.
используйте DiffUtil.Callback для обновления RecyclerView, но Shallow Copy make areItemsTheSame
и areContentsTheSame
всегда возвращает true.
Итак, я хочу знать, как разделить ссылки на данные слоя представления и модели, я использую Deep Copy и раньше, но это также не очень хорошо, потому что, когда recyclerview удаляет один, я должен изменить список адаптера и изменить список моделей, изменить список моделей вызовет обновление списка адаптеров, это очень грязно;
другой метод, сначала измените список моделей и сообщите об обновлении адаптера, это приведет к потере обновлений pos и анимации, например, элемент адаптера поддерживает горизонтальную прокрутку для удаления и удаления в действии фильтра, если обновление модели, представление не будет знать причину, которая триггер удаления элемента