【发布时间】:2018-01-16 16:14:10
【问题描述】:
【问题讨论】:
-
使用
JavaCast<T>- developer.xamarin.com/api/member/…
标签: xamarin xamarin.android google-places-api
【问题讨论】:
JavaCast<T> - developer.xamarin.com/api/member/…
标签: xamarin xamarin.android google-places-api
无法将类型“Java.Lang.Object”隐式转换为“Android.Runtime.JavaDictionary”。存在显式转换(您是否缺少演员表?)
我注意到在您的previous question 中,placeList 的类型是JavaList,
您应该注意JavaList.Get(position) 返回Java.Lang.Object 的类型。不能直接转成JavaDictionary。
JavaListGet(int location) 方法:
public class JavaList : Java.Lang.Object, System.Collections.IList, System.Collections.ICollection, IEnumerable
{
...
public virtual Java.Lang.Object Get(int location);
}
正如@Jon Douglas 所说,您可以使用JavaCast:
JavaDictionary<string, string> googlePlace = placeList.Get(eachPlace).JavaCast<JavaDictionary<string, string>>();
你可以使用System.Linq:
JavaDictionary<string, string> googlePlace = placeList.ElementAt(eachPlace);
using System.Linq;
...
private void showNearbyPlaces(JavaList<JavaDictionary<string, string>> placeList)
{
for (int eachPlace = 0; eachPlace < placeList.Count; eachPlace++)
{
JavaDictionary<string, string> googlePlace = placeList.ElementAt(eachPlace);
string reference = googlePlace["reference"];
double lat = System.Double.Parse(googlePlace["lat"]);
}
}
【讨论】: