我是 Android 新手,正在为 5 个表实现内容提供程序。我的问题是:我应该在单个内容提供程序中为每个表或多个表都有一个内容提供程序吗?由于 Content Provider 具有单一的插入、更新、查询、删除方法。
如何在我的应用程序中只包含一个 Content Provider?我已经搜索过,在大多数示例中,我只找到一个表应用程序。
我必须在哪里使用切换条件来支持具有相同内容提供程序的多个表?
请给我一些想法。
我是 Android 新手,正在为 5 个表实现内容提供程序。我的问题是:我应该在单个内容提供程序中为每个表或多个表都有一个内容提供程序吗?由于 Content Provider 具有单一的插入、更新、查询、删除方法。
如何在我的应用程序中只包含一个 Content Provider?我已经搜索过,在大多数示例中,我只找到一个表应用程序。
我必须在哪里使用切换条件来支持具有相同内容提供程序的多个表?
请给我一些想法。
您可以使用 URI 参数:
List<String> android.net.Uri.getPathSegments()
例如,如果您的 URI 是:
content://com.mypackage.MyContentProvider/MyTable
MyTable
将在返回的列表中getPathSegments();
。
然后,您必须在 URI 中指定您的表,并在提供程序中的插入、更新、查询、删除方法中根据 URI 参数构建查询。
为了避免对 URI 进行测试,您可以向您的提供者添加一个名为witch的抽象方法,该方法将返回您的as 。getTableName()
tableName
String
然后将您的提供者扩展到 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
而不是抽象提供者。
做一个供应商。使用 Android 提供的 URIMatcher 类将内容 URI 与不同的表进行匹配。
在这里阅读:http: //developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI