Android, Spinner, id z bazy danych

0

Cześć,
mam problem ze Spinnerem. Mam w bazie listę kategorii, która jest do niego ładowana. Problem pojawia się kiedy chcę edytować dany rekord. Chciałbym, by wartość listy rozwijanej była zgodna z wartością zapisaną w bazie dla danego rekordu. Problem jest taki, że funkcja setSelecion() jako argument przyjmuje pozycje z listy, która jak wiadomo nie zawsze jest zgodna z numerem _id z bazy. W jaki sposób mogę sobie z tym poradzić? W listView jest normalnie id dostępne - tutaj tego chyba nie ma.

Dzięki za każda pomoc.

0

nie bardzo rozumiem z czym masz problem. jeżeli chcesz podmienić wartość danego pola w spinnerze to je zmień, po czym wywołaj notifyDataChange(). wsio

0

Mam w bazie rekordy i chcę żeby użytkownik mógł je edytować. Jednym z parametrów jest kategoria wyświetlana za pomocą listy rozwijanej. Chodzi o to, żeby w tej liście rozwijanej wybrana była kategoria, która jest zapisana w bazie. W tym celu pobieram id kategorii danego rekordu, tylko że dalej nie wiem co zrobić bo Spinner nie przechowuje numerów id poszczególnych pozycji tylko numer pozycji na liście od zera. I nie bardzo wiem jak znaleźć sposób na "przetłumaczenie" numeru id na numer pozycji w liście. setSelection(4) ustawi listę na pozycji 4 a nie na pozycji, która w bazie ma ID=4. Rozumiesz już co mam na myśli? Chciałbym móc za pomocą ID z bazy wyświetlić właściwą dla danego rekordu pozycję.

0

zrób własnego adaptera i przekaż takie obiekty jakie potrzebujesz. Spinner to taki listView tylko inaczej wygląda

0

Taki adapter do Spinnera jest identyczny jak do ListView? Ma dziedziczyć po BaseAdapter? Szukam info w dokumentacji o tych adapterach i jakoś nie mogę na to trafić...

Znalazłem coś takiego:
http://abhiandroid.com/ui/custom-spinner-examples.html Nie wczytałem się jeszcze dobrze ale już mam pewną wątpliwość. Powiedzmy, że zaimplementuje sobie sobie tę metodę getItemId(). Będę mógł wtedy spokojnie pobrać Id z bazy. Pozostaje jednak kwestia setSelection(position), tzn. w jaki sposób sprawić by można było "wybierać" pozycje za pomocą id z bazy. Pewnie należy stworzyć do tego metodę, tylko że nie mam pojęcia w jaki sposób..


No dobra... Znalazłem coś takiego: http://stackoverflow.com/questions/4419264/how-to-set-spinner-selection-by-id-not-position To rzeczywiście zadziała, ale jakoś tak mam wątpliwości, czy jest to rozwiązanie optymalne :) Jak ktoś ma lepszy pomysł to chętnie posłucham :)

0

ech, nie bardzo rozumiem z czym masz problem. Piszę Ci jeszcze raz , adapter w spinnerze może dziedziczyć po BaseAdapter, ArrayAdapter etc. Jako listę obiektów możesz se podać swoje obiekty z bazy danych. i voila masz id elementu , no bo masz pozycję, masz listę elementów, no to bierzesz sobie id elementu z pozycji. bardziej łopatologicznie nie potrafię

1 użytkowników online, w tym zalogowanych: 0, gości: 1