簡體   English   中英

多個表的內容提供者

[英]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個類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而不是抽象提供程序。

建立一個提供商。 使用Android提供的URIMatcher類將內容URI與不同的表進行匹配。

請閱讀此處: http//developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM