【问题标题】:CWAC android endless list adapter for very big listCWAC android 无限列表适配器,适用于非常大的列表
【发布时间】:2012-09-02 04:16:48
【问题描述】:

我想知道如何使用 CWAC 的无限适配器来处理非常大的列表。

我主要关心的是内存管理。如果我缓存了数千个项目,我最终会出现内存不足的异常。那么我该如何处理那个缓存呢?我可以清除之前的条目吗?

据我了解,当我们向下滚动列表时,无限适配器只会触发其 cacheInBackground() 方法和 appendCachedData()。如果我想清除不再可见的早期条目(列表顶部)的缓存怎么办?

当我向上滚动时,无休止的适配器会如何表现? 换句话说,无限适配器是双向的吗?如果没有,我可以解决这个限制吗?

提前致谢。

【问题讨论】:

    标签: android commonsware-cwac


    【解决方案1】:

    EndlessAdapter 与你的问题关系不大。只要您的底层适配器回收其行,适配器框架就可以像处理“非常大的列表”一样工作。但是,最终,您的模型数据会消耗过多的堆空间。

    那么我该如何处理那个缓存呢?

    首先不要将“数千个项目”放在ListView 中。为您的用户提供一些无需筛选大量列表即可查找内容的方法。

    我可以清除之前的条目吗?

    不,你不能在任何其他Adapter 中这样做。

    如果我想清除不再可见的较早条目(列表顶部)的缓存,该怎么办?

    制作您自己的AdapterViewAdapter 框架,其工作原理是Adapter 报告某个更大数据集中某些位置范围的内容。

    当我向上滚动时,无限适配器会如何表现?

    与任何其他Adapter 相同。

    【讨论】:

    • 您好,感谢您的回答。您说“首先不要将“数千个项目”放在 ListView 中。为您的用户提供一些不涉及筛选大量列表的查找事物的方法。”但是,例如,当使用 gmail 应用程序时,我可以在收件箱中无限滚动,而且我从未见过 gmail 崩溃。他们如何处理这个?他们必须在某个时候清除最顶层项目的缓存,不是吗?再次感谢:)
    • @azpublic:“他们是如何处理这个问题的?” -- 对于初学者,他们需要的唯一信息是每行大约 80 个字符。有大量的 RAM 可容纳大量 80 个字符的块。
    猜你喜欢
    • 2023-03-02
    • 2012-10-30
    • 2015-06-12
    • 2015-09-09
    • 1970-01-01
    • 2018-06-02
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多