2012-08-22 108 views
0

我正在做一個假命令行系統一個有趣的應用程序列表,我要顯示在同一個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

回答

0

也許你可以把所有的字符串放在一個列表中,每次添加一個字符串,從包含所有項目的列表中重新創建一個字符串,並將其影響到你的textview。

+0

喜歡這個? String logValue = logText.toString(); – AwesomeUnicorn

+0

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

+0

從來不知道「+ =」也適用於字符串。謝謝! – AwesomeUnicorn

1

此方法:

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)); 
0

你可以使用一個ListView不使用隔離並使用ArrayAdapter填充它。

這樣你就不必擔心內存,用戶可以輕鬆地滾動瀏覽以前的命令。