显示在TextView中

问题描述:

我正在做一个假命令行系统一个有趣的应用程序列表,我要显示在同一个TextView的输入和输出,就像这样:显示在TextView中

>something 
>something else 
>even more stuff 
>etcetera. 

我已经想通了解如何将EditText中的文本存储到字符串中并添加\ n和>,但是我无法使用字符串作为整个事情:为避免堵塞RAM,我想在删除行后说50?我认为使用列表要容易得多。

然而,这不起作用:

log.setText((CharSequence) logText); 

但会出现什么?

+0

TextUtils.join(list,“\ n”) – njzk2

+0

Erm ...我不太明白你的意思......进一步澄清? :我 – AwesomeUnicorn

+0

你必须迭代你的列表来获取每个项目(或''toString()'方法可能已经为你做这个) – FoamyGuy

也许你可以把所有的字符串放在一个列表中,每次添加一个字符串,从包含所有项目的列表中重新创建一个字符串,并将其影响到你的textview。

+0

喜欢这个? String logValue = logText.toString(); – AwesomeUnicorn

+0

不是。更像 String logValue =“”; for(String item:logText) logValue + = item; – Aerilys

+0

从来不知道“+ =”也适用于字符串。谢谢! – AwesomeUnicorn

此方法:

http://developer.android.com/reference/android/text/TextUtils.html#join(java.lang.CharSequence,java.lang.Iterable)

返回一个各元素的组成(或者铸造为一个字符串或使用了toString值)之间的每个在由分隔符隔开的字符串元件。因此,您可以轻松地将所有项目串联在一个字符串中。

您还可以使用http://developer.android.com/reference/java/util/AbstractList.html#subList(int,int) 来限制所述列表中项目的数量。

从你的问题我认为是logText某种形式的名单,因此,你可以拨打

log.setText(TextUtils.join("\n>", logText.subList(0, 50)); 

你可以使用一个ListView不使用隔离并使用ArrayAdapter填充它。

这样你就不必担心内存,用户可以轻松地滚动浏览以前的命令。