Ho uno spinner che è popolato con gli oggetti Category
che vengono recuperati dal db. La tabella Categorie contiene le colonne _id
e category_name
. Voglio mostrare il nome della categoria nella casella di selezione, ma quando l'utente seleziona un elemento, ho bisogno che recuperi l'ID dell'articolo selezionato. Ho provato le seguenti: variabiliCome recuperare un ID dell'elemento selezionato in uno Spinner dinamico?
Dichiarazione (a livello di classe):
int currCategoryId;
ArrayAdapter<String> adapter;
NotesManager manager = new NotesManager(this);
ArrayList<Category> arrListCategories;
ArrayList<String> arrListCategoriesString = new ArrayList<String>();
Spinner spCategories;
li Istanziare in onCreate
metodo:
manager.getAllCategories();
arrListCategories = manager.getAllCategories();
for (int i = 0; i < arrListCategories.size(); i++)
{
Category currCategory = arrListCategories.get(i);
arrListCategoriesString.add(currCategory.getCategory_name().toString());
}
adapter=new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, arrListCategoriesString);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCategories.setAdapter(adapter);
spCategories.setOnItemSelectedListener(spinnerListener);
e questo è lo spinnerListener ho provato:
OnItemSelectedListener spinnerListener = new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// An item was selected.
//currCategory = (String) parent.getItemAtPosition(pos).toString();
//selectedCategory =
Category selectedCategory = (Category)spCategories.getItemAtPosition(pos);
currCategoryId = selectedCategory.getId();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
};
Ma in questo caso l'app si arresta in modo anomalo e viene visualizzato "
stringa non può essere lanciato alla Categoria" a questa linea:
Category selectedCategory = (Category)spCategories.getItemAtPosition(pos);
Ho provato anche questo:
currCategoryId = view.getId();
Ma poi, invece di 1 o 2 (a seconda di quale categoria Ho selezionato , attualmente ne ho 2), sto ricevendo un numero molto lungo ...
Come posso risolvere il problema? Come posso recuperare l'ID dell'oggetto selezionato?
try parent.getAdapter.getItem(); e lancia questo articolo nella classe desiderata, spero che funzionerà –
@AdeelPervaiz No, non ha funzionato - non esiste il metodo getAdapter ... – Igal