像HTML选择框一样使用Spinner维护名称值对?

时间:2014-07-12 22:01:40

标签: android android-spinner

我有一个微调器,它显示当然是字符串的位置名称数据。

现在问题是当用户选择它们时,我需要进一步传递该位置的经度 - 纬度值。

将该位置字符串发送回Geolocater并再次获取其经度 - 纬度值将是多余的事情。

我是否可以保持连接到微调器中每个字符串项的Longitude-Latitude的double类型值。就像它发生在html select框中一样? 有没有这样做的模式,我的意思是它似乎是每次都在foursquare等应用程序中发生的非常受欢迎的任务。

1 个答案:

答案 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() )。