I am trying to query data from sqlite db through CursorLoader. When i go through the documentation in android developer website, i can't find the limit query.
CursorLoader(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
How can i implement limit in CursorLoader?
Thanks in Advance
The hackish way:
String sortOrder = "ROWID LIMIT 5"
which will result in ORDER BY ROWID LIMIT 5
. ROWID
would sort by the implicit row ids that SQLite keeps - very close to what happens when you don't specify a sort oder at all.
Not that this is abusing the fact that the order parameter does not check if the supplied value is just a valid order type. Kind of a buffer overflow attack.
A better way would be to define Uri
parameters.
// query code
Uri queryUri = Uri.parse("content://what/ever/items");
queryUri = queryUri.buildUpon().appendQueryParameter("limit", "5").build();
// in ContentProvider
String limit = queryUri.getQueryParameter("limit");
Both approaches will only work if the ContentProvider
is compatible with above attempts to limit. There is actually no well-defined way to limit or select certain data from a ContentProvider
. Each ContentProvider
comes with it's own contract so above will not work with every provider.
You can use SQLiteQueryBuilder methods whose provides ability to have LIMIT
clause.
Or You can just append LIMIT
to Yours selection string.
Also, there's an option to provide limit via uri (as part of it) and handle it in your ContentProvider.
Looks like CursorLoader
is not providing any API for it currently.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With