Нарушенная иерархия наследования при использовании 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. Это не должно вызывать никаких проблем.

Другие вопросы по тегам