刷新微调

我有一个微调的意见。 该活动启动另一个popup式窗口,其中我添加或删除父级显示在微调值中的一个活动。 因此,在onActivityResult()中,通过调用我的fillSpinner()方法刷新微调器的内容,以便反映任何附加值或删除的值。 此方法的参数是之前select的值:

private void fillSpinner(String value){ Cursor c = mDbHelper.getAllCategories(); startManagingCursor(c); c.moveToFirst(); String[] from = new String[]{DBAdapter.KEY_CATEGORY}; SimpleCursorAdapter scCats = new SimpleCursorAdapter( this, android.R.layout.simple_spinner_item,c,from, new int[]{android.R.id.text1}); scCats.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); category.setAdapter(scCats); if (value != null && value != "") { category.setSelection((int)mDbHelper.categoryIndex(value)); } } 

当我打开微调,它包含正确的列表(即刷新),并select正确的值。 但是,微调控件本身(处于closures状态)不会显示选定值,而是显示列表中的第一个值。

当我在debugging器中遍历代码时,在我调用setSelection()之前和之后,Spinner值是正确的(并且总是使用相同的正确ID调用它)。 但是,由于我不能离开这个事件,所以当我稍后恢复执行时,Spinner中的值就会改变。

换句话说,微调控件的显示string被改变,并且与popup活动返回时所select的项目不同。

任何想法都表示赞赏。

Solutions Collecting From Web of "刷新微调"

我发现了一个简单的解决scheme:使用Spinner.setSelection(int position,Boolean NavigateTo)来让Spinner显示正确的选定项目。

示例:Spin.setSelection(iPos,true);

祝你好运。

我想这个问题是由于我的光标在每次调用时都被重新创build。 我没有更好的解释。 这篇文章间接指出了我的正确方向。

在初始创build之后,通过保持光标,我可以在更改列表数据之后调用requery(),而不是在我的问题中运行方法。 现在工作正常。