Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to insert extra elements into a SimpleCursorAdapter or Cursor for a Spinner?

I have a Spinner which is to show a list of data fetched from database. The data is returned to a cursor from query, and the cursor gets passed to spinner's SimpleCursorAdapter. It is working fine as such, but I want to insert another item on top of this data. For example, the spinner is already showing a list of user created templates saved in DB, but I want to insert "New Template" and "Empty Template" on top of the list of templates, and it needs to be inserted into Cursor/SimpleCursorAdapter somehow.

I have considered using an arraylist and populating the arraylist from cursor, but cursor is better solution for me since it contains other related rows of data too. I searched internet for other solutions and found some answers asking to use CursorWrapper for this purpose, but I could not find a concrete example how to use CursorWrapper to accomplish what I want. How can I insert some rows in cursor or can someone please give a easy to follow CursorWrapper example!! Thanks in advance.

like image 474
elto Avatar asked Jul 19 '11 22:07

elto


1 Answers

You can use a combination of MergeCursor and MatrixCursor with your DB cursor like this:

MatrixCursor extras = new MatrixCursor(new String[] { "_id", "title" }); extras.addRow(new String[] { "-1", "New Template" }); extras.addRow(new String[] { "-2", "Empty Template" }); Cursor[] cursors = { extras, cursor }; Cursor extendedCursor = new MergeCursor(cursors); 
like image 65
naktinis Avatar answered Oct 04 '22 14:10

naktinis