我正试图将Pixate添加到我们使用Xamarin构建的跨平台应用程序中。
在Android应用程序中,我使用自定义ListView和实现接口的自定义适配器。但是,当列表视图的Adapter属性设置为我的自定义适配器时,它的基类是Java。Lang.Object而不是BaseAdapter,并且不再实现接口(强制转换将导致异常)。
有人对Pixate有类似的问题吗?我该如何修复它?
我已经在github repo上回答了这个问题,所以这里是它的复制粘贴。
通过代理AdapterViews对其进行Pixate处理,以便用其新位置标记回收的视图(请参见https://github.com/Pixate/pixate-freestyle-android/blob/master/pixate-freestyle/src/com/pixate/freestyle/PXHierarchyListener.java#L232)。这允许我们设计更复杂的CSS表达式,比如列表中的"第n个子"。目前,java.lang.reflect.Proxy是用一些已知的适配器接口创建的,因此如果您想获得原始的BaseAdapter,则转换将失败。
好消息是,我们有一种方法可以通过PixateFreestyle.getAdapter(AdapterView视图)访问原始适配器。然后您可以转换到BaseAdapter。这不应该造成任何问题。