【问题标题】:Can we store 2 values to a spinner?我们可以将 2 个值存储到微调器吗?
【发布时间】:2018-02-24 19:43:43
【问题描述】:

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

我已经到达了一个地方,我可以在微调器中读取数组的索引值,因此向它添加 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 个值存储到微调器。根据选择,只应显示一个,另一个应读取/带入数据库。并且无法弄清楚如何做到这一点。

标签: android arrays spinner


【解决方案1】:

试试这个

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();

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-16
      • 2012-01-04
      • 1970-01-01
      • 2017-05-27
      • 2021-06-03
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多