दुर्भाग्यवश, ContentResolver सीमा तर्क होने पर क्वेरी नहीं कर सकता है। आपके ContentProvider के अंदर, आपका MySQLQueryBuilder अतिरिक्त सीमा पैरामीटर जोड़ने में क्वेरी कर सकता है।
एजेंडा के बाद, हम ContentProvider के अंदर एक अतिरिक्त यूआरआई नियम जोड़ सकते हैं।
static final int ELEMENTS_LIMIT = 5;
public static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
........
uriMatcher.addURI(AUTHORITY, "elements/limit/#", ELEMENTS_LIMIT);
}
तो आपकी क्वेरी विधि की गतिविधि से
String limit = null; //default....
switch(uriMatcher.match(uri)){
.......
case ELEMENTS_LIMIT:
limit = uri.getPathSegments().get(2);
break;
......
}
return mySQLBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder, limit);
क्वैरी ContentProvider में
।
uri = Uri.parse("content://" + ContentProvider.AUTHORITY + "/elements/limit/" + 1);
//In My case I want to sort and get the greatest value in an X column. So having the column sorted and limiting to 1 works.
Cursor query = resolver.query(uri,
new String[]{YOUR_COLUMNS},
null,
null,
(X_COLUMN + " desc"));
स्रोत
2015-07-23 02:17:50
बस एक विचार। लेकिन आप सीमा पैरा को अंतिम पैरामीटर के रूप में डालने का प्रयास कर सकते हैं। इस तरह की गतिविधि की तरह .managedQuery (playlistUri, शून्य, शून्य, शून्य, "सीमा 3")? – Renard