gpt4 book ai didi

android - 多个表的内容提供者

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:39 25 4
gpt4 key购买 nike

我是 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 作为 字符串

然后将您的提供程序扩展到 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 - 多个表的内容提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15807795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com