我有一个微调器,它显示当然是字符串的位置名称数据。
现在问题是当用户选择它们时,我需要进一步传递该位置的经度 - 纬度值。
将该位置字符串发送回Geolocater
并再次获取其经度 - 纬度值将是多余的事情。
我是否可以保持连接到微调器中每个字符串项的Longitude-Latitude的double
类型值。就像它发生在html select
框中一样?
有没有这样做的模式,我的意思是它似乎是每次都在foursquare等应用程序中发生的非常受欢迎的任务。
答案 0 :(得分:0)
是的,它非常简单,尽管它们与HTML中的名称/值对不完全相同。
Spinner实际上通过调用适配器上的getView()
来显示其值。默认情况下,ArrayAdapter<T>
会将toString()
应用于每个项目 - 这些项目不一定必须是字符串自己。所以你可以定义一个新类,比如说:
public class SpinnerItem {
String name;
double latitude;
double longitude;
@Override
public String toString() {
return name;
}
}
然后创建ArrayAdapter<SpinnerItem>
而不是ArrayAdapter<String>
。
这将在Spinner中显示名称。要获取经度/纬度值,您只需使用adapter.getItem(position)
(例如来自OnItemSelectedListener
)。
(如果您正在使用自定义适配器,那么解决方案基本相同,只是您将覆盖适配器中的getView()
而不是在项目中实现toString()
)。