Size: a a a

Android Architecture

2017 February 07

M

Marty in Android Architecture
Michael Yeryomenko
то есть адаптер получает новую коллекцию, сравнивает со старой коллекцией. Вычисляет индексы элементов которые были удалены. Потом сетит новые данные. Потом нотифает удаленее. А не слишком ли много лишних вычислений и бегания по классам Adapter -> View -> Presenter -> View -> Adapter
всё ещё сложно представить
у меня в том случае была задача - удалить что было и показать новые данные, без анимаций и тд
источник

DB

Dmitry Berdnikov in Android Architecture
Michael Yeryomenko
то есть адаптер получает новую коллекцию, сравнивает со старой коллекцией. Вычисляет индексы элементов которые были удалены. Потом сетит новые данные. Потом нотифает удаленее. А не слишком ли много лишних вычислений и бегания по классам Adapter -> View -> Presenter -> View -> Adapter
У вас есть кэшированные данные в репозитории? когда получаем новый лист, можно в репозитории вычислить diff и передавать например обертку, где будет и новый лист и диф
источник

M

Marty in Android Architecture
и вот этот шаг что означает " Потом нотифает удаленее" ?
источник

V

Vlad in Android Architecture
Вероятно, речь о notifyItemRemoved у RV адаптера
источник

MY

Michael Yeryomenko in Android Architecture
Marty
и вот этот шаг что означает " Потом нотифает удаленее" ?
notifyItemRangeInserted(int positionStart, int itemCount)
notifyItemRangeRemoved(int positionStart, int itemCount)
источник

MY

Michael Yeryomenko in Android Architecture
Dmitry Berdnikov
У вас есть кэшированные данные в репозитории? когда получаем новый лист, можно в репозитории вычислить diff и передавать например обертку, где будет и новый лист и диф
можно.
Но не кажется ли Вам что это ненужное усложнение?
источник

DB

Dmitry Berdnikov in Android Architecture
Michael Yeryomenko
можно.
Но не кажется ли Вам что это ненужное усложнение?
Почему усложнение? вы просто добавляете вычисление diff, если используется rxjava то оно будет в фоне работать
источник

V

Vlad in Android Architecture
Согласен.
При поставленных условиях "очистка списка без анимаций и показ новых данных" нет смысла считать дифф
источник

DB

Dmitry Berdnikov in Android Architecture
Не внимательно прочел, думал что наоборот хотелось анимации)
источник

V

Vlad in Android Architecture
к тому же если происходит полная замена отображаемого списка а не дополнение/удаление. То и анимации (даже дефолтные) будут выглядеть так себе
источник

EM

Eugene Matsyuk in Android Architecture
@senneco @xanderblinov кстати а как вы работаете со списками?
источник

A

Artur in Android Architecture
Vlad
к тому же если происходит полная замена отображаемого списка а не дополнение/удаление. То и анимации (даже дефолтные) будут выглядеть так себе
Тут можно DiffUtils использовать, тогда и анимации будут при замене списка.
источник

V

Vlad in Android Architecture
да, но если это todo лист и добавляется один элемент - это ок.
Но если меняется весь список целиком
источник

AB

Alexander Blinov in Android Architecture
Eugene Matsyuk
@senneco @xanderblinov кстати а как вы работаете со списками?
1) если просто добавляются новые элементы, то recycler сам все мапит.
2) Если по мелочи (удрать конечный элемент, который показывает загрузку и вместо него вкинуть пачку новых) то делается на уровне адаптера
3) Если все сложно то считаешь в интеракторе(презентере) диф
источник

A

Artur in Android Architecture
Alexander Blinov
1) если просто добавляются новые элементы, то recycler сам все мапит.
2) Если по мелочи (удрать конечный элемент, который показывает загрузку и вместо него вкинуть пачку новых) то делается на уровне адаптера
3) Если все сложно то считаешь в интеракторе(презентере) диф
в каком виде отправляете дифф?
источник

AB

Alexander Blinov in Android Architecture
Artur
в каком виде отправляете дифф?
тут лучше всего использовать стандартное DiffUtils
источник

AZ

Alexandr Zherebtsov in Android Architecture
Alexander Blinov
тут лучше всего использовать стандартное DiffUtils
наверное вопрос какой формат данных уходит из презентера/интерактора?
источник

A

Artur in Android Architecture
Alexander Blinov
тут лучше всего использовать стандартное DiffUtils
Презентер напрямую использует классы андроида? Тесты - роболектрик?
источник

AB

Alexander Blinov in Android Architecture
Artur
Презентер напрямую использует классы андроида? Тесты - роболектрик?
тут трейд оф между велосипедом и удобством тестирования
источник

EM

Eugene Matsyuk in Android Architecture
@xanderblinov кстати вы храните список в адаптере и презентере или только в адаптере?
источник