1
 <Spinner
    android:id="@+id/spinner1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/editText2"
    android:layout_marginTop="22dp"
    android:entries="@array/categorylist"
    android:prompt="@string/category" />

我已经创建了上述格式的微调器!

final Spinner spnr= (Spinner)findViewById(R.id.spinner1);
    String category=spnr.getSelectedItem().toString();

通过以上述格式获取值来推动 db 中的微调器值。

现在当从 db 检索值时。微调器应根据特定值设置...我该如何实现任何想法?

4

2 回答 2

1

那么通过使用setSelection()您可以为微调器设置特定的选择而不是第一个(默认情况下)。现在你的问题是如何从你拥有的价值中获得位置。所以这是执行此操作的代码:

String yourString = "some value"; //the value you want the position for

ArrayAdapter yourAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter

int spinnerPosition = yourAdap.getPosition(yourString);

//set the default according to value
spnr.setSelection(spinnerPosition);
于 2012-09-27T19:47:34.530 回答
1

只有当您存储设置为 Spinner 条目的项目数组时,这才有可能。您可以在微调器中设置所选项目的位置。所以你必须找出你从数据库中查询的项目的索引。加载 categorylist 的 StringArray 并迭代数组并将每个项目与从数据库中获取的项目进行比较。然后将找到的项目的索引设置为微调器中的选定项目。

    String[] list = getResources().getStringArray(R.array.categorylist);
    int index = 0;
    for(String item : list) {
        if(item.equals("your_item")){
            break;
        }
        index++;
    }
    spinner.setSelection(index);
于 2012-09-27T19:26:27.903 回答