我们可以将2个值存储到微调器中吗?

时间:2017-09-15 15:00:48

标签: android arrays spinner

我正在开发小应用项目,要求用户从下拉列表中选择至少5个不同的值,即android中的AKA spinner。我的问题是我需要显示用户城市列表,然后获取用户选择的城市ID。

我已经到达了一个可以在spinner中读取数组的索引值的地方,因此在它上面加1,我得到了ID。 这个链接有答案 类似于我所做的, Set Key and Value in spinner

但现在根据字母顺序(A - Z)调用城市,因此ID不再从1开始。

我需要做的是,在旋转器中存储2个值。一个是城市ID,另一个是城市名称。其中只有城市名称应该对用户可见。但只有城市ID才能进入数据库。

请指出我的解决方案。或者任何人有任何想法或解决这个问题,请建议。

String[] spinnerArray = new String[City_ID.size()];
HashMap<Integer,String> spinnerMap = new HashMap<Integer, String>();
for (int i = 0; i < City_ID.size(); i++)
{
spinnerMap.put(i,City_ID.get(i));
spinnerArray[i] = City_NAME.get(i);
}

ArrayAdapter<String> adapter =new ArrayAdapter<String>.   
(context,android.R.layout.simple_spinner_item, spinnerArray);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);


String name = spinner.getSelectedItem().toString();
String id = spinnerMap.get(spinner.getSelectedItemPosition());

我做错了吗?

2 个答案:

答案 0 :(得分:2)

试试这个

List<Map<String, Object>> rData = new ArrayList<>();

然后,添加您的商品

for (int i = 0; i < City_ID.size(); i++) {
    Map<String, Object> item = new HashMap<>();
    item.put("id", City_ID.get(i));
    item.put("name", City_NAME.get(i));
    rData.add(item);
}
SimpleAdapter arrayAdapter = new SimpleAdapter(MainActivity.this, rData,
                        android.R.layout.simple_spinner_dropdown_item,
                        new String[]{"name"}, new int[]{android.R.id.text1});
spinner.setAdapter(arrayAdapter);

要获取所选项目的名称和ID,

Map<String, Object> selectedItem = rData.get(spinner.getSelectedItemPosition());
String name = selectedItem.get("name").toString();
String id = selectedItem.get("id").toString();

答案 1 :(得分:1)

我以一个cutom微调器结束了。我有一个隐藏的EditText,然后我将城市名称放在文本视图中。编辑文本保存城市,而文本视图显示城市名称。我可以从数组索引中访问所选的城市ID。