绿色道。有一种简单的方法可以在 ListView 中显示来自实体的所有记录,并且支持自动更新列表。也许是懒惰类?如何使用它?
问问题
3617 次
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 回答