【问题标题】:Updating the cursor manually by adding an item at a given index通过在给定索引处添加项目来手动更新光标
【发布时间】:2013-02-15 17:22:00
【问题描述】:

我想在特定索引处的游标中插入一个项目(甚至是 null)。

例如,我需要显示 5 行信息,但我的查询将得到一个只有 3 条记录的游标,因此我需要将其他两列(假设为第二行和第四行)显示为“否可用信息”。视图逻辑已经存在,它接受一个游标并通过检查该索引处的项目来完成其余的工作,如果在该索引处找到 null,则将显示“无可用信息”。所以现在,当我的游标中的记录少于 5 条时,我必须在其中包含第二个和第四个索引为 null,并且应该将其发送到查看。

但经过一些初步研究发现,没有这种方法可以在特定索引处插入光标。有人对“手动更新光标”有任何想法吗?

【问题讨论】:

    标签: android android-cursoradapter android-cursor android-cursorloader


    【解决方案1】:

    您无法更改光标(除非您创建 MatrixCursor 并复制内容 - 无论如何都是不好的做法,因为光标确实应该反映数据,而不是显示详细信息)。

    你可以做的是像这样修改你的 CursorAdapter :

    /** Returns at least MIN_ITEM */
    @Override
    public int getCount() {
        return Math.min(MIN_ITEM, super.getCount());
    }
    
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        if (cursor.isAfterLast()) {
            // Bind 'No information available' to your view
        } else {
            // Your current implementation
        }
    }
    

    【讨论】:

      【解决方案2】:

      AFAIK 无法以这种方式更新游标。

      我建议将您的列表更改为使用 ArrayListAdapter,然后将返回的数据从 Cursor 转换为 ArrayList。

      这应该允许您以您提到的方式操作 ArrayList。

      【讨论】:

      • Corey Scott,谢谢,我想到了这个解决方案,但是对于我现有的 View 实现,我应该只传递一个光标,并且更改 View 逻辑的成本很高。
      猜你喜欢
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多