我们怎样才能在android spinner的Item select中传递一个不同于我们在spinner中选择的文本的值?

时间:2016-06-21 09:10:54

标签: android

我创建了一个显示世界上所有国家/地区名称的微调器。现在,我希望传递像阿富汗的AFG,意大利的ITA等的值,以便在从微调器中选择项目时存储为字符串。我很困惑如何做到这一点。因为,我在旋转器中分配国家的全名,并希望在点击Spinner时传递与国家名称不同的数据(就像我在选择时所说的意大利ITA)。

5 个答案:

答案 0 :(得分:2)

创建您的Object pojo,如

class Country{
 String name;
String  code;

//getter and setters
    }

并设置国家/地区列表 List<Country> list;到适配器

显示国家/地区名称并访问国家/地区代码

spinner.getSelectedItem().getCode();

答案 1 :(得分:1)

这可以做两件事,一件是想要在代码中使用但又不想在选择其他名称中看到,另一件是如果你想在微调器中显示名称,也可以在下面的代码检查中使用。< / p>

创建一个公共类来存储国家/地区名称和国家/地区代码,如下所示

CommonClass.java

  //I am taking it as CommonClass you can change it.

  public static final String[] strCountryNames = {"India","Italy","Afghanistan","United States of America"};

  public static final String[] strCountryCodes = {"IND","ITA","AFG","USA"};

现在,对于微调器setAdapter,请使用CommonClass.strCountryNames,

在那里你想使用代码的地方使用CommonClass.strCountryCode,

假设您想获取印度代码,那么您可以将其检查为

 CommonClass.strCountryCode[spinner.selectyedPosition];

答案 2 :(得分:0)

您可以获取所选国家/地区并拨打str.substring(0, 3).toUpperCase()

,而不是传递完整的国家/地区名称

答案 3 :(得分:0)

如果你想要前三个名字

String countryName = "China"
String shortName = countryName.substring(3).toUpperCase();

答案 4 :(得分:0)

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
         int pos = spinner.getSelectedItemPosition();
String mysourcestring= yourarraylistname[+pos];
String substr=mysourcestring.substring(0,3).toUpperCase();
}
 @Override
       public void onNothingSelected(AdapterView<?> parent) {

      }
});

现在要传递的值将在substr中。 对不起,如有错误, 希望这有帮助