Thật không may, ContentResolver không thể truy vấn có đối số giới hạn. Bên trong ContentProvider của bạn, MySQLQueryBuilder của bạn có thể truy vấn thêm tham số giới hạn bổ sung.
Theo chương trình làm việc, chúng tôi có thể thêm quy tắc URI bổ sung bên trong 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);
}
Sau đó, trong phương pháp truy vấn của bạn
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);
Truy vấn ContentProvider từ hoạt động.
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"));
Nguồn
2015-07-23 02:17:50
Chỉ là một ý tưởng. Nhưng bạn có thể thử đặt mệnh đề giới hạn làm tham số cuối cùng. Giống như activity.managedQuery (playlistUri, null, null, null, "limit 3")? – Renard