【问题标题】:Spinner onSelectedItem to string?Spinner onSelectedItem 到字符串?
【发布时间】:2015-02-06 19:54:20
【问题描述】:

我有一个 Spinner 和一个单独的包含五个数字的字符串数组。

这是字符串数组:

<resources>
<string-array name="numbers">
    <item>10001</item>
    <item>10002</item>
    <item>10003</item>
    <item>10004</item>
    <item>10005</item>
</string-array>

当我选择一个 Spinner 项目时,我希望选定的 Spinner 项目引用字符串数组中的一个数字。

例子:

Spinner 选择的项目是“Bob”,他的号码是 10002。 我想将 Spinner 选择变成一个字符串,这样我就可以进一步使用它。

该字符串的进一步用法:

String phoneNo = *number from the String-Array*


                try {
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(phoneNo, null, message, null, null);

【问题讨论】:

  • 添加您现在拥有的代码。 Bob 和这个数字有什么关系?它在某处的物体中吗?
  • Bob 是在自己的字符串数组中,用于 Spinner。我需要将 Bob 与他的号码联系起来。数字在一个单独的字符串数组中。

标签: android arrays string spinner


【解决方案1】:

如果包含 Bob 的字符串数组与包含 Bob 号码的字符串数组的大小相同,您可以组织两个字符串数组,使 Bob 姓名的索引与他的号码的索引相同。

这样,您只需使用一个索引来引用两个字符串数组中的相关元素。

【讨论】:

    【解决方案2】:

    最好进行某种映射,然后使用OnItemSelectedListener 从映射中检索数字。原文如此

    public class YourActivity extends Activity 
        implements OItemSelectedListener
    {
        ...
        private Map<Integer, String> mNumbers;
        ...
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            mNumbers = new HashMap<>();
            String[] numbers = getResources().getStringArray(R.id.numbers);
            String[] name = getResources().getStringArray(R.id.names);
    
            if (names.length == numbers.length) {
                for (i = 0; i < names.length; i++) mNumbers.put(i + 1 /*I think*/, numbers[i];
            } else { Log.wtf("YourActivity", "somehow names and numbers are different sizes"); }
            ...
            //btw: you're going to want a better storage option.
            Spinner yourSpinner = (Spinner) findViewById(...);
            yourSpinner.setOnItemSelectedListener(this);
        }
        ...
        @Override
        public void onItemSelected(AdapterView parent, View view, int position, long id) {
             String number = mNumbers.get(position); //I cant remember if the position is zero or one indexed
             //do your thing
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2017-02-02
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多