动态声明TextViews

时间:2014-04-19 14:53:36

标签: java android memory

我正在尝试创建用于学习目的的Android备忘录应用程序。我将所有备忘录存储在final TextView[] notes = new TextView[200];中 在这里,我意识到我必须对目前为200的备忘录数设置上限。另一种选择可能是将备注存储在字符串数组中。无论如何,一个选项是保持if条件,当条件数量变为数组大小时,检查另一个size = size+1数组并复制前一个数组的内容。有没有更好的方法呢?另外,我如何计算一个TextView变量的大小。我问这个是否应该考虑删除之前的数组,因为我创建了一个新数组。将notes = null;做出来吗?

4 个答案:

答案 0 :(得分:1)

我不是android中的高手,在你提到的这些条件下,我会使用ListView,并会不断更新每个新备忘录的列表,列表将继续增长。

答案 1 :(得分:1)

在用户界面上,使用ListView因为ListView会回收屏幕上看不到的视图,因此在代码中创建200多个TextView是不好的做法。

您可以使用SQLite数据库存储所有备忘录,但只读 N个备忘录一次从数据库中说出10个并在屏幕上显示。

一般来说,可以使用ArrayList但在其中保留从数据库中读取的N个项目,使用其clear()add()方法替换旧新项目。

Android's documentation about LinkedList

  

如果您需要类似队列的行为,则此类主要非常有用。有可能   如果您希望列表包含零或,则也可用作列表   一个元素,但仍然需要能够缩放到稍大   元素的数量。但是,一般情况下,您应该使用   如果您不需要类似队列的行为,则为ArrayList。

答案 2 :(得分:0)

对于大小增加的音符数组,执行size = size + 1通常很糟糕,因为每次添加备忘录时都必须重新初始化整个数组。相反,当你达到最大值时,将数组大小加倍,当数组为四分之一满时,将其减半。

答案 3 :(得分:0)

如果您想要一个用于保存备忘录的数据结构,请选择LinkedList。好处是不需要调整大小和复制所需的数据。因为LinkedList不使用数组来保存数据,例如一个ArrayList。当内存很长时,列表会增长。

LinkedList可以适合您的学习曲线。但如果您的应用程序被系统销毁,您将最终使用SQLite数据库来保留备忘录。

相关问题