自定义 ContentProvider 的 fillWindow() 方法中该怎么做?

2024-06-28

我正在编写一个自定义 ContentProvider,它提供由单个常量字符串组成的内容,我将其表示为具有列 _id = 0 和 value =“SomeString”的单行表。该字符串不存储在数据库中,因此我开发了 CrossProcessCursor 的子类,它具有像我上面描述的那样的行为所需的一切。

CrossProcessCursor 的文档非常稀疏,并且没有真正解释 fillWindow() 方法应该做什么。根据 CursorWindow 方法的描述,我将以下内容放在一起,我认为应该涵盖它:

public class MyCursor implements CrossProcessCursor {
  ...
  public void fillWindow(int pos, CursorWindow window) {

        if (pos != 0) {  // There's only one row.
            return;
        }

        window.clear();
        window.allocRow();  // TODO: Error check, false = no memory
        window.setNumColumns(2);
        window.setStartPosition(0);
        window.putLong(0, 0, 0);
        window.putString("SomeString", 0, 1);
    }
}

正如预期的那样,当客户端应用程序请求内容时,它会以 pos = 0 被调用,但客户端应用程序在尝试执行第一行(也是唯一的一行)时会抛出异常:

Caused by: java.lang.IllegalStateException: UNKNOWN type 48
     at android.database.CursorWindow.getLong_native(Native Method)
     at android.database.CursorWindow.getLong(CursorWindow.java:380)
     at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:108)
     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:194)
     at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
     at android.database.CursorWrapper.moveToFirst(CursorWrapper.java:86)
 ...(Snipped)...

谁能阐明这个方法应该做什么来向客户端返回看起来正确的行?

Thanks.


对于你正在做的事情,你应该查看MatrixCursor http://developer.android.com/reference/android/database/MatrixCursor.html。它使用AbstractCursor#fillWindow调用的实现toString在每一个物体上。因为无论如何你只是发送一个字符串,所以它应该适合你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 ContentProvider 的 fillWindow() 方法中该怎么做? 的相关文章

随机推荐

  • 如何在WPF中应用WS_EX_TRANSPARENT?

    我想制作一个启动画面 无法通过鼠标 UI 单击 选择 因此我如何申请 Win32 ExtendedWindowStyles WS EX TRANSPARENT 在 Windows 演示基础窗口上 在表格中我会这样做 https stacko
  • 功能测试 - 模拟服务不会保留在服务容器中

    我希望有人能够对我面临的这个问题有所启发 问题 我在功能单元测试中模拟了doctrine orm default entity manager 服务 我将其注入客户端服务容器中 这样我就不必在功能测试过程中访问我的数据库 对于仅涉及 GET
  • 从 ASP.NET Core 中的不同 HTTP 标头读取 JWT 令牌

    在 ASP NET Core API 项目中 我需要验证位于与 Authorization 标头不同的标头中的另一个 JWT Bearer 令牌 例如 假设发送 GET 请求以获取产品 api products在名为的标头中带有不记名令牌A
  • 如何获取行数据绑定事件中单元格的值?以及如何检查单元格是否为空?

    我正在使用 sqldatasource 和GridView 我想从 GridView 中获取单元格的值RowDataBound事件 因为我不能使用e RowIndex 如果单元格为空 如何检查 updatetng 事件 我用了if null
  • md5盐密码php

    我知道关于这个主题有很多问题 但我真的需要问这个 今天我一直在研究使用 md5 加密密码 所以我所做的是 我有 4 盐 它们根据用户值而变化 从电子邮件 ID 和 substr 然后对它们进行 md5 来自电子邮件和 ID 的 substr
  • CSS 改变悬停时的背景颜色

    为什么这不起作用 div class homePrizes div class homeCredit 1250 Points div div class homePrize Prize1 div div CSS homePrizes cle
  • 如何安装gitlab-rails?

    我正在尝试为 Gitlab 项目创建一个组访问令牌 它需要访问 gitlab rails 控制台才能执行此操作 在 gitlab 教程上 这是安装它的链接 https docs gitlab com ee administration op
  • C# 按特定属性比较两个大型项目列表

    我有两个大的项目列表 其类如下所示 两个列表的类型相同 public class Items public string ItemID get set public int QuantitySold get set var oldList
  • 我应该在单个 WordPress 模板中使用 $post = Timber::query_post() 还是 $post = new TimberPost() ?

    我在官方 Timber 存储库上读到 有关使用的一般问题应发布在这里 我是木材 树枝的新手 我有一个非常 基本 的问题 在入门主题中我已经看到了single php传递给 context 的 post 变量设置为 post Timber q
  • Scala 中的逆变和协变

    abstract class Bhanu A val m List A gives error contravariant type A occurs in covariant position in type gt List A of v
  • VSS 到 Subversion

    我正在研究从 SourceSafe 到 Subversion 的潜在迁移 并且我们正在努力解决编辑 合并 提交与签出 更新 签入范例 主要关心的是您如何知道哪些文件已被 Subversion 检出 以及检出给谁 VSS 中是否有相当于 状态
  • 正则表达式删除文件扩展名

    我需要一个可以删除文件名扩展名的正则表达式 仅返回文件名 以下是一些输入和输出的示例 myfile png gt myfile myfile png jpg gt myfile png 显然我可以手动执行此操作 即删除最后一个点中的所有内容
  • Haskell 中将函数与类型关联起来

    假设您有一个序列化器 反序列化器类型类 class SerDes a where ser a gt ByteString des ByteString gt a 事实证明 为每种类型提供一个特殊的辅助函数至关重要a e g compress
  • 用户打字时自动删除输入框中的某些字符

    我正在尝试验证表单 并且我正在处理的输入框应该只包含数字 如果用户开始输入任何字母 我希望他们自动删除 显然如果他们输入数字 则不应删除 这是我的js var defaultValue 10 document ready function
  • 为什么我不能在初始化中使用 attr_accessor ?

    我正在尝试做一个instance eval随后是一个attr accessor inside initialize 我不断收到这样的消息 初始化 未定义的方法 attr accessor 为什么这不起作用 代码看起来有点像这样 class
  • 有没有办法找到 .NET 中嵌入资源的最后修改日期?

    有人知道这样做的方法 在运行时 吗 我不确定我能在描述中详细阐述比标题中已经给出的更多信息 但如果您觉得我错过了某些内容 请说出来 resx 文件本身应该有一个与之关联的修改日期 但您将无法获取该文件中各个资源的修改日期
  • 如何让 Chai 使用 toString() 显示实际值和预期值

    我最近从 should js 切换到 chai js 因为我发现前者在基于浏览器的测试中造成了障碍 该更改不需要对我的测试套件进行任何更改 因为语法受支持 但我发现失败测试的输出不再以有用的方式显示实际值和预期值 AssertionErro
  • 绑定到布尔值的可见性的 TargetNullValue

    我有一个Grid whose Visibility使用以下方法将属性绑定到某个模型的布尔属性Converter
  • iscroll 问题与二维(水平+垂直)滚动、可滚动是否相关?

    问题简述 我有一段有效的二维滚动代码 这样的滚动效果很好 滚动可以在任何方向上完成 不像在 ti e 时仅限于水平或仅限垂直 但有两个问题 向顶部和左侧滚动超出可见区域 不会反弹可滚动区域 向右滚动 底部会弹回来 问题演示 http jsf
  • 自定义 ContentProvider 的 fillWindow() 方法中该怎么做?

    我正在编写一个自定义 ContentProvider 它提供由单个常量字符串组成的内容 我将其表示为具有列 id 0 和 value SomeString 的单行表 该字符串不存储在数据库中 因此我开发了 CrossProcessCurso