Нарушенная иерархия наследования при использовании Pixate в приложении Xamarin.Android
Я пытаюсь добавить Pixate в наше кроссплатформенное приложение, созданное с помощью Xamarin.
В приложении для Android я использую собственный ListView и специальный адаптер, который реализует интерфейс. Но когда для свойства "Адаптер" представления списка установлено значение моего пользовательского адаптера, его базовый класс - Java.Lang.Object вместо BaseAdapter и больше не реализует интерфейс (приведение приведет к исключению).
У кого-нибудь была похожая проблема с Pixate? Как мне это исправить?
1 ответ
Я ответил на этот вопрос на репозитории GitHub, так что вот копия этого.
Pixate работает с AdapterViews, передавая их по доверенности, чтобы пометить переработанные виды на их новую позицию (см. https://github.com/Pixate/pixate-freestyle-android/blob/master/pixate-freestyle/src/com/pixate/freestyle/PXHierarchyListener.java#L232). Это позволяет нам стилизовать более сложные CSS-выражения, например, "nth-child" в списке. В настоящее время этот java.lang.reflect.Proxy создается с несколькими известными интерфейсами адаптера, поэтому приведение не будет выполнено, если вы захотите получить свой оригинальный BaseAdapter.
Хорошей новостью является то, что у нас есть способ добраться до этого оригинального адаптера через PixateFreestyle.getAdapter (представление AdapterView). Затем вы можете использовать свой BaseAdapter. Это не должно вызывать никаких проблем.