3

绿色道。有一种简单的方法可以在 ListView 中显示来自实体的所有记录,并且支持自动更新列表。也许是懒惰类?如何使用它?

4

1 回答 1

4

看看这里。我也在使用这样的适配器(包括 ViewHolder-Pattern 以重用 ListView 中的视图),即使对于很多记录它也很快。但如果您需要自动更新功能,这将不可用。

以下是有关 LasyList 的一些信息来解释原因:

  • Get LazyList using Query.listLazy():这不会自动显示新插入的记录(或停止显示已删除的记录),因为记录缓存在内存中。因此更新将不可见,因为记录不会被查询两次。

  • 使用获取 LazyList Query.listLazyUncached():已经存在的记录的更新可能是可见的,但前提是当前不显示更新的记录。你也应该小心,因为我认为插入或删除记录可能会破坏这个列表。

要在列表中插入和删除,您必须刷新底层的 LazyList 并调用notifyDataSetChanged().

我在我的适配器中使用它:

public void setLazyList(LazyList<T> list) {
    if (list != lazyList) {
        lazyList.close();
        lazyList = list;
        this.dataValid = lazyList != null;
        notifyDataSetChanged();
    }
}

顺便说一句:如果您使用的是 LazyList:

如果您不再使用它们,请不要忘记关闭 LazyLists!

于 2013-09-26T07:41:44.710 回答