Tengo una ruleta que se llena con Category
objetos que se recuperan de la base de datos. La tabla Categorías tiene columnas _id
y category_name
. Quiero mostrar el nombre de la categoría en la rueda giratoria, pero cuando el usuario selecciona un elemento, necesito que recupere la identificación del elemento seleccionado. He intentado lo siguiente: Variables¿Cómo recuperar una ID del elemento seleccionado en un Spinner dinámico?
declarando (en nivel de clase):
int currCategoryId;
ArrayAdapter<String> adapter;
NotesManager manager = new NotesManager(this);
ArrayList<Category> arrListCategories;
ArrayList<String> arrListCategoriesString = new ArrayList<String>();
Spinner spCategories;
instanciarlos en onCreate
método:
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);
y este es el spinnerListener Traté:
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) {
}
};
Pero en este caso la aplicación se bloquea y obtengo un "
cadena no se puede convertir a la categoría" en esta línea:
Category selectedCategory = (Category)spCategories.getItemAtPosition(pos);
También probé esto:
currCategoryId = view.getId();
Pero entonces, en lugar de 1 ó 2 (dependiendo de la categoría que he seleccionado , actualmente tengo 2 de ellos), obtengo un número muy largo ...
¿Cómo puedo solucionarlo? ¿Cómo puedo recuperar la identificación del objeto seleccionado?
try parent.getAdapter.getItem(); y eche este artículo a su clase deseada, espero que esto funcione –
@AdeelPervaiz No, no funcionó - no hay un método getAdapter ... – Igal