0

我正在开发一个 android 项目,并且有一个微调器,其中包含来自 string.xml 文件中的字符串数组的项目。

在 strings.xml 我有以下数组

<string-array name="array_loginType">
        <item>Select Login Type</item>
        <item>Website</item>
        <item>App</item>
        <item>Other</item>
</string-array>

并且微调器包含以下 XML

<Spinner  android:id="@+id/add_cboLoginType"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:prompt="@string/add_select_login_type"
    android:padding="4dp" 
    android:entries="@array/array_loginType"/>

在某些时候,用户可以从微调器中选择项目,并在提交时将项目保存在数据库中。然后,我允许用户编辑详细信息,并尝试根据从数据库中检索到的项目在微调器中设置所选项目。即,如果数据库中保存的项目说Website然后Website将在微调器中被选中。

感谢您的任何帮助,您可以提供。

4

2 回答 2

0

如果您知道数组中的哪个位置包含正确的选择,您可以使用Spinner.setSelection();- 方法设置微调器以显示它。

在您的示例中,Website在数组的位置 1 中找到 (第一个实际条目是数字 0)。

因此,您的代码应如下所示:

// Declare the spinner object
Spinner mySpinner = (Spinner) findViewById(R.id.add_cboLoginType);
// Set the correct selection
mySpinner.setSelection(1, true);

第二个参数告诉微调器“动画”选择 - 所以它实际上显示了正确的选择,而不仅仅是设置正确的值(如果它设置为 false 或根本不包含,微调器将会改变(所以任何取决于选择将按预期工作)但它仍将显示为默认选择)。

于 2012-09-19T23:38:16.580 回答
0

因此,您希望用户选择一种类型并将其与其他一些数据一起保存在数据库中,当用户尝试编辑该数据时,您希望编辑屏幕以具有预选的微调器,对吗?

首先你需要一个OnItemClickListener. 这将让您知道用户何时选择了某些内容:

Spinner spin = (Spinner) findViewById(R.id.add_cboLoginType);
spin.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(final AdapterView<?> parent, final View view, 
                            final int position, final long id) {
           // update the type field on the data object you are creating or editing
           // position is the type index
           obj.setTypeIndex(position);
        }
    }
);

这就是您看到更改的方式,现在预选处于编辑模式:

//editMode boolean.. why not
if (editMode) {
     spin.setSelection(obj.getTypeIndex, true);
}
于 2012-09-19T23:40:57.180 回答