4

我是 Android 新手,正在为 5 个表实现内容提供程序。我的问题是:我应该在单个内容提供程序中为每个表或多个表都有一个内容提供程序吗?由于 Content Provider 具有单一的插入、更新、查询、删除方法。

如何在我的应用程序中只包含一个 Content Provider?我已经搜索过,在大多数示例中,我只找到一个表应用程序。

我必须在哪里使用切换条件来支持具有相同内容提供程序的多个表?

请给我一些想法。

4

2 回答 2

1

您可以使用 URI 参数:

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

例如,如果您的 URI 是:

content://com.mypackage.MyContentProvider/MyTable

MyTable将在返回的列表中getPathSegments();

然后,您必须在 URI 中指定您的表,并在提供程序中的插入、更新、查询、删除方法中根据 URI 参数构建查询。

为了避免对 URI 进行测试,您可以向您的提供者添加一个名为witch的抽象方法,该方法将返回您的as 。getTableName()tableNameString

然后将您的提供者扩展到 5 个类Table1ProviderTable2Provider并实现方法

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

做一个供应商。使用 Android 提供的 URIMatcher 类将内容 URI 与不同的表进行匹配。

在这里阅读:http: //developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI

于 2015-08-11T10:54:47.413 回答