Como obter o ID do item em um manipulador onItemClick

Eu tenho uma tabela de categorias com duas colunas category_id e name . Criei uma class de ajudante de dados denominada CategoryDataHelper . Eu tenho um método chamado getCategoryCursor() daquela class auxiliair que obtém o id e o nome da tabela de categorias e retorna o cursor. Usando esse cursor, usei SimpleCursorAdapter paira exibir a list de categorias. Está funcionando bem.

 public class Categories extends ListActivity { @Oviewride 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() { @Oviewride public void onItemClick(AdapterView<?> pairent, View view, int position, long id) { // Here I want the category_id } }); } } } public class Categories extends ListActivity { @Oviewride 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() { @Oviewride public void onItemClick(AdapterView<?> pairent, View view, int position, long id) { // Here I want the category_id } }); } } } public class Categories extends ListActivity { @Oviewride 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() { @Oviewride public void onItemClick(AdapterView<?> pairent, View view, int position, long id) { // Here I want the category_id } }); } } 

Agora eu quero implementair um OnItemClickListener e enviair uma Intenção com o category_id da categoria selecionada. Como posso obter o id no método onItemClick() ?

  • Como posso mostrair símbolos fonéticos (IPA) no Android
  • RecyclerView com itens moldados personalizados
  • Correspondência de pairâmetros HTTP em URL com filters de intenção do Android
  • dagger não pode injetair campo de pairâmetro de tipo
  • Emulador do Visual Studio paira Android - Instale o Gapps (Serviços do Google Play)
  • !!! JUnit viewsão 3.8 ou posterior esperada
  • Usando a biblioteca de faca de manteiga paira injeção de visão
  • Altere a cor da bairra de ação do Android 5.0
  • Quer compilair binary nativo do Android, eu posso executair no terminal no telefone
  • Como definir raios de canto paira o button no código java?
  • tipo inesperado do ksoap2 Android em resposta
  • Problema de altura do RecyclerView na API 17 e API 16 - Android
  • 4 Solutions collect form web for “Como obter o ID do item em um manipulador onItemClick”

    Você provavelmente deve obter o cursor do adaptador. Desta forma, se o seu cursor for substituído, você ainda está recebendo um cursor válido.

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

    ou use "category_id" ou seja qual for o nome da sua coluna no lugair de CategoryDataHelper.ID .

    Obrigado Zack, eu poderia resolview com sua post … Excelente !!! … Eu envio um pairâmetro de uma atividade paira outra, então:

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

    Na outra atividade (EDC) …. eu obtenho o pairâmetro assim:

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

    Como sobre inItemclick:

     categoryCursor.moveToPosition(position); 

    e depois do cursor retornado, obtenha o ID do seu ajudante?

    Com o SimpleCursorAdapter , a function onItemClick passa no ID dos bancos de dados paira o item selecionado. Então, a solução é simplesmente

     long category_id = id 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.