数据集更改的奇怪ListView行为

时间:2013-11-28 10:38:01

标签: android listview

在我的应用程序中,我使用列表中选中的项目数。 我也在更新列表中的项目,删除它们并插入新项目。

案例场景:

  1. 我正在从适配器使用的列表中删除项目
  2. 我正在呼叫notifyDataSetChange
  3. 我正在刷新my component
  4. My component询问mMyListView已检查项目数
  5. View正在返回旧号码
  6. 我正在浏览Android源代码并发现即使我调用notifyDataSetChangehandleDataChanged方法(某些package-protected AbsListView方法)也不会立即调用,但稍后调用。这是负责更改已检查项目数的功能。

    我通过仅使用我自己的类扩展ListView来解决它:

    @Override
    public long[] getCheckedItemIds() {
        handleDataChanged();
        return super.getCheckedItemIds();
    }
    

    要获取已检查的项目编号,我正在调用mMyListView.getCheckedItemIds().length(因为API级别我无法使用getCheckedItemCount)。

    现在它有效,但我不喜欢这个解决方案。我在这里错过了什么吗?

0 个答案:

没有答案