Google Maps Android API の Xamarin.Android 向け Binding ライブラリを使っていたときの話です。
ポリゴンに穴を空けたい と思って、Polygon.Holes
を使おうとしました。
Polygon.Holes.Add
の引数は IList<LatLng>
です。
おっけ、.NET の System.Collections.Generic.List<LatLng>
使うンゴ。
エラー!
Java.Lang.RuntimeException: Parcel: unable to marshal value System.Collections.Generic.List`1[Android.Gms.Maps.Model.LatLng]
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/4009/0a4ab
あー知ってる知ってる。Java.Lang.Object
を継承したクラスでないとダメなやつでしょ?
えーと、IList<T>
を実装してて Java.Lang.Object
から派生してる ”Java の” リストはどれだ?
-
ArrayList
: Generic じゃない -
LinkedList<T>
:IList<T>
を実装してない
つか、Java の ArrayList<T>
はどこだ?
うーんうーんと探し回っていたら、見つけました。
Android.Runtime.JavaList<T>
!!
Java の ArrayList<T>
は、Xamarin.Android では、 JavaList<T>
にマップされています、気をつけて!
ちなみに Xamarin.Forms.GoogleMapsは、もうすぐポリゴンの「穴」に対応します。