Alex Rivera | Logout

assigning hidden values to a listview item

Asked 2010-08-16T11:01:59.493
9

I have an activity that extends ListView. I populate my list with the results of a query to the sqlite database. A list element consists of start_time, end_time, client_name and status. These are the 4 bits on info I need to display for each list item.

My question is: Is it possible for me to assign hidden elements to this ListView item?

For example, I want to store the _id field of the database row for that ListView item, so that when I click it I can start a new activity based on data for that database row.

EDIT

The Code I use to fill my list from my Cursor:

String[] columns = new String[] {VisitsAdapter.KEY_CLIENT_FULL_NAME, VisitsAdapter.KEY_STATUS,VisitsAdapter.KEY_CLIENT_START_TIME, VisitsAdapter.KEY_CLIENT_END_TIME};

// the XML defined views which the data will be bound to
int[] to = new int[] { R.id.name_entry,R.id.number_entry,R.id.start_time_display,R.id.end_time_display  };

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(HomeScreen.this, R.layout.list_element, cur, columns, to);

Where R.layout.list_item is the XML for my list item. I come from a PHP/HTML background so what I would typically do here is have a hidden field to hold my _id value that I could then access once the list item was clicked. can I do something similar in android? can I put a hidden _id field in my xml layout?

Edit
Report

1 Answer

1

You should consider creating a java object which would gather all this information. for instance, you could create a class like "ListItem" and each item would have 5 properties :
start_time
end_time
client_name
status id (and more if you need)

And then, you have 2 options, either you serialize you object to put the whole object in the database, or you keep the structure you already have (I suppose), and each row of your database becomes a ListItem object. Then, when you query your database, you put them all in an ArrayList, and extend ArrayAdapter to make your own adapter. Finally, in the getView method, you call myListItem.getEnd_Time and all the method you need to display your data, and simply don't use the getId, which you can directly use from the adapter when you need the object.

answered 2010-08-16T11:13:16.370

Your Answer