LoginSignup
0
1

More than 5 years have passed since last update.

Xamarin.Android では Java の ArrayList<T> は JavaList<T> だった

Posted at

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は、もうすぐポリゴンの「穴」に対応します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1