我正在使用列表视图来显示用户提交的评论。这显然由ArrayAdapter
支持显示。现在可能会有很多很多评论,我不希望所有的千条评论都保存在内存中。
我是否真的要担心这个问题,还是Android会自行解决这个问题?如果没有,我怎么能最好地做到这一点。添加新评论时我提出的唯一策略是:
> threshold
答案 0 :(得分:0)
在构造函数中,如果列表超出限制,则对其进行切片。
public MyAdapter(List<Item> items) {
this.items = items;
sliceItems();
}
void sliceItems() {
//sort items first
if (this.items.size() > limit) {
this.items = this.items.subList(0, limit);
}
}
public void addItem(Item item) {
this.items.add(item);
sliceItems();
}
答案 1 :(得分:0)
我不同意另一个答案。听起来你会更好地继承BaseAdapter
来编写自己的自定义适配器解决方案。这是一个更多的工作,但将是更好的解决方案。当你需要修改ArrayAdapter
的一种变异方法的行为时,就是你打开自己可能遇到的问题的那一刻。也不建议跟踪用于构建ArrayAdapter
支持的解决方案的列表。首先,不能保证列表引用保持不变......实际上可以改变。因此,它使您的列表与ArrayAdapter
保持同步相当困难。
另外,我可能错了,但我相信将子列表重新分配到原始列表会失败。看看这个post。你最好只是打电话给items.remove(#);
删除一个项目。
但是否则,一般的解决方案是(在您的自定义适配器中)是在添加时始终检查列表的大小。如果超过阈值,请删除项目。