Como definir o item selecionado no MvxSpinner
Eu tenho um MvxSpinner que está ligado a umList<PhotoCategory>
portanto:
<Mvx.MvxSpinner
style="@style/Spinners"
android:id="@+id/photoCategorySpinner"
android:prompt="@string/photoCategory_prompt"
local:MvxBind="ItemsSource PhotoCategories; SelectedItem SelectedPhotoCategory; Visibility ShowPhotoFields, Converter=Visibility"
local:MvxDropDownItemTemplate="@layout/spinner_photocategories"
local:MvxItemTemplate="@layout/item_photocategory" />
oSelectedPhotoCategory
que o SelectedItem está vinculado é também umPhotoCategory
. Quando esta tela está em "modo de atualização", o ViewModel define oSelectedPhotoCategory
à PhotoCategory cujo PhotoCategoryId corresponde ao do banco de dados SQLite. No entanto, quando o controle giratório é exibido, o valor padrão (que eu adiciono aoPhotoCategories
propriedade, PhotoCategory = 0, CategoryName = "[Escolha uma Categoria]") é mostrada. A única correção que encontrei é esse código (que funciona bem) adicionado à Visualização:
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
SetContentView(Resource.Layout.PhotoView);
//If we're in Update mode, select the relevant photo category in the spinner:
PhotoViewModel photoViewModel = (PhotoViewModel)ViewModel;
if (photoViewModel.ScreenMode == Constants.ScreenMode.Update) {
MvxSpinner photoCategorySpinner = FindViewById<MvxSpinner>(Resource.Id.photoCategorySpinner);
int itemPosition = 0;
int selectedPhotoCategoryId = photoViewModel.SelectedPhotoCategory.PhotoCategoryId;
foreach (PhotoCategory photoCategory in photoViewModel.PhotoCategories) {
if (photoCategory.PhotoCategoryId == selectedPhotoCategoryId) {
photoCategorySpinner.SetSelection(itemPosition);
}
itemPosition++;
}
}
Eu também tentei usar o método GetPosition do MvxSpinner.Adapter mas isso sempre retorna -1 para PhotoCategoryId, CategoryName ou SelectedPhotoCategory como o valor do parâmetro.
O que estou perdendo??