Я создал небольшое тестовое приложение для этой проблемы здесь: (https://github.com/Winghin2517/EpoxyExample2).
Я хотел бы передать список объектов в контроллер эпоксидной смолы, чтобы я мог генерировать график. Однако я столкнулся с этой ошибкой при создании приложения:
ошибка: исключение процессора эпоксидной смолы: тип в Iterable не реализует
хэш-код. Тип: kwaai.com.exampleepoxy_hashcodeequals.GraphData (Просмотреть
Prop {view = 'HeaderView', name = 'setLineChart',
тип = java.util.LinkedList})
Epoxy требует, чтобы каждый атрибут модели реализовывал equals и hashCode
так что изменения в модели могут быть отслежены. Если вы хотите, чтобы атрибут
чтобы быть исключенным, используйте опцию «DoNotHash». Если вы хотите игнорировать это
предупреждение используйте опцию 'IgnoreRequireHashCode'
Я думаю, это потому, что я использовал @ModelProp в списке объектов (LinkedList of GraphDataFeed), а не в примитивном типе в соответствии с примером приложения из Epoxy.
@ModelProp
public void setLineChart(LinkedList<GraphData> graphDataFeed) { }
Итак, я следовал за параметрами и изменил свой @ModelProp, чтобы отразить это:
@ModelProp(options = ModelProp.Option.IgnoreRequireHashCode)
После изменения приложение собирается и работает правильно. Вы можете увидеть график ниже.
Однако я не хочу игнорировать атрибут, так как я понимаю, что Epoxy использует Diffing для обновления моделей в обзоре реселлера: https://github.com/airbnb/epoxy/wiki/Diffing
Игнорирование атрибута может означать, что мои модели не обновляются корректно в представлении реселлера.
В инструктивном материале здесь (https://github.com/airbnb/epoxy/wiki/Epoxy-Models#annotations), я вижу, что написано:
Состояние модели определяется равными ей и hashCode
реализации, которая основана на значении всех моделей
свойства.
Это состояние используется в дифференцировании, чтобы определить, когда модель изменилась, поэтому
Эпоксидная смола может обновить вид.
Эти методы генерируются, поэтому вам не нужно их создавать
вручную.
Почему эти методы не генерируются для меня тогда, и если они не генерируются, как я могу сгенерировать эти методы самостоятельно, чтобы избавиться от ошибки?