Cómo obtener el identificador de elemento en un controlador onItemClick

Tengo una tabla de categoría con dos columnas category_id y name . He creado una clase auxiliar de datos llamada CategoryDataHelper . Tengo un método llamado getCategoryCursor() de esa clase del ayudante que busca el id y el nombre de la tabla de la categoría y devuelve el cursor. Usando ese cursor, he utilizado SimpleCursorAdapter para mostrar la lista de categorías. Está funcionando bien.

 public class Categories extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); categoryDataHelper = new CategoryDataHelper(getApplicationContext()); Cursor categoryCursor = categoryDataHelper.getCategoryCursor(); ListAdapter adapter = new SimpleCursorAdapter ( this, android.R.layout.simple_list_item_1, categoryCursor, new String[] { CategoryDataHelper.NAME }, new int[] {android.R.id.text1}); // Bind to our new adapter. setListAdapter(adapter); list = getListView(); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Here I want the category_id } }); } } 

Ahora quiero implementar un OnItemClickListener y enviar un Intent con el category_id de la categoría seleccionada. ¿Cómo puedo obtener el ID en el método onItemClick() ?

4 Solutions collect form web for “Cómo obtener el identificador de elemento en un controlador onItemClick”

Usted probablemente debe obtener el cursor desde el adaptador. De esta manera, si el cursor se reemplaza, todavía está recibiendo un cursor válido.

 Cursor cursor = ((SimpleCursorAdapter) adapterView).getCursor(); cursor.moveToPosition(position); long categoryId = cursor.getLong(cursor.getColumnIndex(CategoryDataHelper.ID)); 

O utilice "category_id" o el nombre de su columna en lugar de CategoryDataHelper.ID .

Gracias Zack, podría resolver con su mensaje … Excelente! … envío un parámetro de una actividad a otra así:

 Intent myIntent = new Intent(Clientes.this, Edc.class); Cursor cursor = (Cursor) adapter.getItem(position); myIntent.putExtra("CLIENTE_ID", cursor.getInt(cursor.getColumnIndex("_id"))); startActivity(myIntent); 

En la otra actividad (EDC) …. i obtener el parámetro así:

 int _clienteId = getIntent().getIntExtra("CLIENTE_ID", 0); 

¿Qué tal en onItemclick:

 categoryCursor.moveToPosition(position); 

Y luego desde el cursor devuelto obtener el ID de su ayudante?

Con SimpleCursorAdapter , la función onItemClick pasa en el id de bases de datos para el elemento seleccionado. Por lo tanto, la solución es simplemente

 long category_id = id 
  • Cómo habilitar el desplazamiento en un simpleadapter en el firmware X16 de Google Glass
  • No se puede utilizar SimpleAdapter en un ListFragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.