我是Android新手,正在为5个表实现内容提供程序。 我的问题是: 我是否应该为每个表或一个表中的多个表提供Content Provider 内容提供商?由于Content Provider具有单个插入,更新,查询,删除方法。
如何在我的应用程序中只包含一个Content Provider?我搜索过并且在大多数示例中,我只找到一个表格应用程序。
我在哪里必须使用切换条件来支持具有相同Content Provider的多个表?
请给我一些想法。
答案 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个类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
而不是抽象提供者。
答案 1 :(得分:0)
建立一个提供商。使用Android提供的URIMatcher类将内容URI与不同的表进行匹配。
请在此处阅读:http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI