ContentProvider使用Distinct

在使用ContentProvider做数据库数据查询时,默认是不处理重复数据的,如果你需要过滤重复数据,可以采用Distinct关键字,具体操作方法如下:

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    String tableName = null;
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
    // 解决查询数据重复的问题。

    switch (sUriMatcher.match(uri)) {
        case CAGEGORY:
            tableName = P.CategoryColumns.TABLE_NAME;
            break;
        default:
            throw new IllegalArgumentException("Unknown URI " + uri);
    }

    qb.setTables(tableName);
    // 避免查询到重复数据
    qb.setDistinct(true);
    Cursor cursor = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder);

    // Tell the cursor what uri to watch, so it knows when its source data changes
    cursor.setNotificationUri(getContext().getContentResolver(), uri);
    return cursor;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容