4

行uriがすでにわかっている場合(つまり、すでにContentURIがあり、行IDが追加されました)。

挿入またはコンテンツオブザーバーOnChange(android api 16の場合)の両方で、挿入/変更されたURIが返され、その行からデータを効率的に(多くのクエリや指示なしで)取得したいと思います。ただし、私が見つけた唯一の方法は、URIからIDを解析し、そのIDに対する選択句を使用してクエリを作成し、次のようにカーソルを取得することでした。

     long row = ContentUris.parseId(uri);
     String mSelectionClause = ContentProvider.Table._ID + " = ?";
     String[] mSelectionArgs = {Long.toString(row)};
     Uri other_uri = Uri.parse(ContentProvider.AUTHORITY_STRING + ContentProvider.UriPathIndex.Table);
     Cursor cursor = cr.query(other_uri ,null,mSelectionClause,mSelectionArgs,null);

それを行う他の方法はありますか?行uriを直接使用できるかどうか疑問に思いました

4

1 に答える 1

5

http://developer.android.com/guide/topics/providers/content-provider-basics.html#ContentURIsから引用

多くのプロバイダーでは、URIの最後にID値を追加することで、テーブル内の1つの行にアクセスできます。たとえば、_IDが4の行をユーザーディクショナリから取得するには、次のコンテンツURIを使用できます。

Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);

編集(コメントから):すべての標準化されたコンテンツプロバイダー(少なくともGoogleが提供するプロバイダー)で機能します。これは、行ベースのデータストアによってバックアップされたコンテンツプロバイダーの設計ガイドラインに従うすべてのコンテンツプロバイダーで機能します。

于 2012-10-26T12:46:40.607 に答える