我是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的测试,你可以添加到您提供商摘要方法称为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
而不是抽象的提供商。
Make one provider。使用Android提供的URIMatcher类将内容URI与不同的表匹配。
这里阅读:http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI
单一插入,更新,查询,删除这些方法问表的名字吧?那么问题是什么 – AAnkit 2013-04-04 09:51:12
我想在多个表中插入或删除或更新,但内容提供商只有一个插入,一个删除...方法,所以我该怎么做 – user 2013-04-04 09:53:39
为什么不多次调用这些方法每张桌子? – AAnkit 2013-04-04 11:47:35