[英]Content provider for multiple tables
我是Android新手,我正在為5個表實現內容提供程序。 我的問題是:我是否應該為單個內容提供商中的每個表或多個表提供內容提供商? 由於Content Provider具有單個insert,update,query,delete方法。
如何在我的應用程序中只包含一個Content Provider? 我搜索過並且在大多數示例中,我只找到一個表格應用程序。
我在哪里必須使用切換條件來支持具有相同Content Provider的多個表?
請給我一些想法。
您可以使用URI參數:
List<String> android.net.Uri.getPathSegments()
如果您的URI是,例如:
content://com.mypackage.MyContentProvider/MyTable
MyTable
將位於getPathSegments();
返回的列表中getPathSegments();
。
然后,您必須在URI中指定您的表,並在提供程序中的insert,update,query,delete方法中根據URI參數構建查詢。
為了避免在URI上進行測試,您可以向您提供一個名為getTableName()
的Abstract方法,它會將您的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.