4

私は Android が初めてで、5 つのテーブルのコンテンツ プロバイダーを実装しています。私の質問は次のとおりです。各テーブルまたは単一のコンテンツ プロバイダー内の複数のテーブルに対してコンテンツ プロバイダーを使用する必要がありますか? Content Provider には単一の挿入、更新、クエリ、削除メソッドがあるためです。

アプリケーションにコンテンツ プロバイダを 1 つだけ含めるにはどうすればよいですか? 私は検索しましたが、ほとんどの例で、単一のテーブル アプリしか見つかりません。

同じコンテンツ プロバイダーで複数のテーブルをサポートするには、どこでスイッチ条件を使用する必要がありますか?

アイデアを教えてください。

4

2 に答える 2

1

URI パラメータを使用できます。

List<String> android.net.Uri.getPathSegments()

たとえば、URI が次の場合:

content://com.mypackage.MyContentProvider/MyTable

MyTableによって返されるリストに含まれgetPathSegments();ます。

次に、URI でテーブルを指定する必要があり、プロバイダーの挿入、更新、クエリ、削除メソッドで、URI パラメーターに応じてクエリを作成する必要があります。

URI でのテストを回避するために、プロバイダーに追加できるwitch と呼ばれるAbstractメソッドは、 asを返します。getTableName()tableNameString

次に、プロバイダーを 5 つのクラスなどに拡張し、Table1ProviderメソッドTable2Providerを実装します。

Class abstract  MyProvider extends ContentProvider{

public abstract String getTableName();

 @Override
  public Cursor query(Uri uri, String[] projection, String selection,
      String[] selectionArgs, String sortOrder) {

   ///...
    // Set the table
    queryBuilder.setTables(getTableName());

    //...
    return cursor;
  }
}

class Table1Provider extend MyProvider{

public String getTableName(){
   return "Table1";
}

次にTable1Provider、抽象プロバイダーの代わりに をインスタンス化します。

于 2013-04-04T10:50:46.357 に答える
0

1 つのプロバイダーを作成します。Android が提供する URIMatcher クラスを使用して、コンテンツ URI を異なるテーブルと照合します。

ここを読む: http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI

于 2015-08-11T10:54:47.413 に答える