多个表的内容提供者

时间:2013-04-04 09:45:55

标签: android android-contentprovider simplecursoradapter

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

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

我在哪里必须使用切换条件来支持具有相同Content Provider的多个表?

请给我一些想法。

2 个答案:

答案 0 :(得分:1)

您可以使用URI参数:

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

如果您的URI是,例如:

content://com.mypackage.MyContentProvider/MyTable

MyTable将位于getPathSegments();返回的列表中。

然后你必须在URI中指定你的表,并在提供者的insert,update,query,delete方法中根据URI参数构建一个查询。

为了避免在URI上进行测试,您可以向提供商添加一个名为getTableName()抽象方法,该方法将tableName作为String返回。

然后将您的提供者扩展到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而不是抽象提供者。

答案 1 :(得分:0)

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

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