【问题标题】:Android: better way to get an integer from a spinnerAndroid:从微调器获取整数的更好方法
【发布时间】:2015-01-25 06:50:01
【问题描述】:

我有一个充满整数值的微调器,我正在尝试提取选定的值。我设法使用以下代码行:

Integer.decode(spinner.getSelectedItem().toString())

但这似乎需要一个简单的操作。

我正在使用定义如下的字符串数组创建微调器:

在strings.xml中

<string-array name="settings_cells_array">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
</string-array>

在活动的onCreate函数中:

Spinner spinner = (Spinner) findViewById(R.id.num_cells_spinner);

// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.settings_cells_array, R.layout.my_layout);

// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(R.layout.my_layout);

// Apply the adapter to the spinner
spinner.setAdapter(adapter);

在我看来,由于微调器是使用字符串数组创建的,.toString() 调用似乎过多,但我想这为由自定义对象或类似东西构建的适配器和微调器留出了灵活性。

无论如何,我的问题是:
有没有更好的方法从以这种方式定义的微调器中提取整数,或者,是否有更好的方法来设置我的微调器,使其与 ints 配合得更好?

【问题讨论】:

    标签: java android spinner arrays


    【解决方案1】:

    您可以做的是首先从资源中获取数组,然后创建一个整数数组并将其提供给ArrayAdapter&lt;Integer&gt;。像这样的:

    Spinner spinner = (Spinner) findViewById(R.id.num_cells_spinner);
    String[] array = getResources().getStringArray(R.array.settings_cells_array);
    
    Integer[] intArray = new Integer[array.length];
    for(int i = 0; i < array.length; i++) {
        intArray[i] = Integer.parseInt(array[i]);
    }
    
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this,
    android.R.layout.simple_spinner_dropdown_item, intArray);
    
    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);
    

    然后将getSelectedItem() 的结果转换为Integer :

    Integer i = (Integer)spinner.getSelectedItem();
    

    【讨论】:

    • 这很有道理,而且似乎比我尝试做的更有效率。谢谢!
    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多