SAP Cloud SDK for Android如何读取本地离线实体列表数据?
SAP Cloud SDK for Android 本地读取Products实体列表方案
1. 关于你提到的demoService对应实例说明
官方文档里的demoService就是SAP Cloud SDK向导根据你接入的OData服务自动生成的自定义数据服务类单例实例:
- 类名一般和你创建项目时填写的OData服务名一致,继承自
com.sap.cloud.mobile.odata.DataService - 该实例默认在向导生成的全局仓储类(通常命名为
ServiceRepository)中已经完成初始化,可直接调用全局单例获取,不需要你自己重新实例化
2. 本地读取Products列表代码示例
因为你已经开启了离线功能,默认查询请求会自动路由到本地离线存储,不需要额外配置路由逻辑:
// 替换为你项目中实际的自定义数据服务类名、单例获取方法 CustomODataService service = ServiceRepository.getInstance().getCustomODataService(); // 构造查询条件,支持排序、过滤、分页等操作 DataQuery query = new DataQuery() .orderBy(Products.NAME, SortOrder.ASCENDING) .filter(Products.PRICE.greaterThan(100)) // 按需添加过滤条件,不需要可删除 .top(50); // 按需添加分页参数,不需要可删除 // 异步查询本地数据,禁止在主线程执行数据库操作 service.getProductsAsync(query, productList -> { // 查询成功,将数据返回主线程更新列表UI runOnUiThread(() -> { yourListAdapter.setData(productList); yourListAdapter.notifyDataSetChanged(); }); }, error -> { // 自定义查询错误处理逻辑 Log.e("LOCAL_QUERY", "产品列表查询失败", error); });
3. 注意事项
- 如果你需要强制查询后端线上数据,只需要在
DataQuery后追加.online()方法即可 - 示例中的
Products实体类是向导自动生成的,存放在项目的odata.entity包下,可直接调用其属性字段做查询条件 - Kotlin项目逻辑完全一致,仅需要将语法替换为Kotlin对应写法即可
内容的提问来源于stack exchange,提问作者djomla87
相关产品推荐
相关产品推荐

