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