How to get the item id in an onItemClick handler
Solution 1
You probably should get the cursor from the adapter. This way if your cursor gets replaced you are still are still getting a valid cursor.
Cursor cursor = ((SimpleCursorAdapter) adapterView).getCursor();
cursor.moveToPosition(position);
long categoryId = cursor.getLong(cursor.getColumnIndex(CategoryDataHelper.ID));
or use "category_id"
or whatever the name of your column is in place of CategoryDataHelper.ID
.
Solution 2
Thanks Zack, I could solve with your post...Excelent!!! ... I send a parameter from an activity to another so:
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);
In the other activity (EDC)....i get the parameter so:
int _clienteId = getIntent().getIntExtra("CLIENTE_ID", 0);
Solution 3
How about in onItemclick:
categoryCursor.moveToPosition(position);
and then from the returned cursor get the ID from your helper?
Solution 4
With the SimpleCursorAdapter
, the onItemClick
function passes in the databases id for the selected item. So, the solution is simply
long category_id = id
dev_android
Updated on June 13, 2022Comments
-
dev_android about 2 years
I have a category table with two columns
category_id
andname
. I have created a data helper class namedCategoryDataHelper
. I have a method namedgetCategoryCursor()
of that helper class which fetches the id and the name from the category table and returns the cursor. Using that cursor, I have usedSimpleCursorAdapter
to display the list of categories. It is working fine.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 } }); } }
Now I want to implement an
OnItemClickListener
and send an Intent with thecategory_id
of the selected category. How can I get the id in theonItemClick()
method? -
Dmitry Zaytsev over 11 years
adapterView
is usually not an adapter. It's a view that uses adapter and therefore have methodgetAdapter()
. So, in your example you should calladapterView.getAdapter()
instead. -
Apurva over 9 yearsIs it applicable with
SimpleAdapter
?