我正在开发小应用项目,要求用户从下拉列表中选择至少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());
我做错了吗?
答案 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。