有什么方法可以计算列表操作的内存开销/计算能力。背景如下:
我在页面上有一个 ListView ,该页面上有例如底部的3个标签(全部,搜索,最近)。现在,如果您单击选项卡,则 ListView 应显示适当的项目。
现在有两种不同的方法,一种是:
使用单个ListAdapter,相应地过滤项目
-如果单击全部,只需将数据库中的所有项目放入其中
-如果您单击“最近”,则只需放入符合要求的项目
使用两个(三个)ListAdapters ,每个类别一个
-如果单击全部,则将列表的setAdapter()设置为适当的
-如果您单击“最近”,则将setAdapter()设置为适当的一个
我们正在谈论200个项目的列表,这些项目是从数据库中创建的复杂对象。例如搜索项目时,输入标题的一部分,并且列表应仅显示适当的项目。这些项目将不会被重新创建,我将只查询ID,并使用缓冲的项目(有关数据结构,请参阅下文)。
我也不确定的是“在哪里过滤”,我可以在数据库中执行此操作(从标题为abc的位置选择),然后再进行以下操作:
再次说明一下应用数据的结构:
希望您能如愿以偿,我正在尝试“昂贵”的操作。也许,作为回答的最后动机,我将写下一些案例,您可以对它们的成本发表看法:
感谢您提供任何反馈意见或不良做法的提示。通过处理可见的列表元素,而不是首先在“后台”进行操作,然后设置新的ListAdapter,尤其是可能的事件触发问题
最佳答案
我看到您已经接受了答案,但是我想我不同意,因为ArrayList
必须复制所有元素,如果中间是添加或删除的元素。
我了解您已经拥有一个包含所有条目的HashSet
。
在那种情况下,我认为最有效的适配器是自 ListAdapter
启发而来的自定义ArrayAdapter
ArrayList mAllObjects
(用于“all”选项卡)。 ArrayList mRecentObject
(用于“最近”选项卡)ArrayList mMatchObject
(用于“搜索”选项卡)mRecentObject
列表(如果尚不存在,则创建它)匹配过滤器
mMatchObject
列表并添加匹配元素。这里没有优化要完成。 ArrayList上的delete()
方法为O(n)。 关于android - 使用过滤功能,多个ListAdapter或单个ListAdapter(Android性能),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8378459/