У меня есть представление со счетчиком. Действие запускает другой acvitity со всплывающего окна, где я добавляю или удаляю значения, которые родитель показывает в Счетчике. Так, в onActivityResult () я обновляю содержание Счетчика так, чтобы это отразило любые дополнительные или удаленные значения путем называния моего fillSpinner () методом. Параметр к этому методу является ранее выбранным значением:
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));
}
}
Когда я открываю Spinner, он содержит корректный список (т.е. он был обновлен), и правильное значение выбрано. Однако само управление Счетчиком (в его закрытом состоянии) не показывает выбранное значение, но первое в списке.
Когда я ступаю через код в отладчик, значение Счетчика правильно прежде и после того, как я называю setSelection () (и это всегда называют с тем же корректным идентификатором). Однако, так как я не могу ступить из события, когда я возобновляю выполнение с короткого момента значение в изменениях Счетчика.
Другими словами, отображенная струна счетчика поменялась и отличается от выбранного пункта, когда я возвращаюсь из своего раскрывающегося действия.
Любые идеи ценятся.
Я думаю, проблема заключалась в том, что мой курсор воссоздавался при каждом вызове. У меня нет лучшего объяснения. Этот пост косвенно указал мне правильное направление.
Удерживая курсор после его первоначального создания, я смог просто вызвать Requery () после изменения данных списка, в отличие от выполнения метода в моем вопросе. Теперь все работает нормально.