2014-08-27 18 views
0

我正在使用TextWatcher在鍵入時更改EditText的文本。該字符串將新的/替換的文本附加到舊文本,然後顯示它。我只想顯示新的/替換的文本。我試圖保留「以前的」文本的索引,並只顯示已被替換的新文本。我不確定這是否是正確的方式,可能是我完全錯誤的做法,這就是爲什麼它給了我一個超越界限的例外。任何人都可以請幫忙。例如,我鍵入a,然後下一次鍵入b時,文本框中顯示的文本是aab而不是ab,我想刪除此冗餘。下面是我的代碼:同時,我怎樣才能插入新行字符如果一個行字符超過限額如10,後10個字符的字符,應在下一行顯示TextWatcher中的索引超出限制的例外

tw = new TextWatcher() 
{   
    public void beforeTextChanged(CharSequence s,int start,int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    {        
     txtData.removeTextChangedListener(tw); 
     txtData.setText(s.toString().replace("\n", "*")) 
     txtData.addTextChangedListener(tw); 
    } 
}; 
txtData.addTextChangedListener(tw); 
+0

你想達到什麼目的? atm你寫的每封信都將被單獨處理。我假設你想要處理當前在你的textview中的charsequence。那將是s。你不必調用txtData上的getText(),這是textwatcher所附的edittext,我假設 – 2014-08-27 14:41:45

+0

感謝Daniel的回覆。我根據您的建議對代碼進行了更改,但問題依然存在。我想刪除冗餘/重複的字符,並在n個字符後插入一個新行。例如,如果我鍵入字母a,它會顯示在edittext中,但是當我嘗試輸入下一個字母時,它會將前一個文本附加到下一個/新文本中,例如a然後是aab,然後是aabaabc,然後是aabaabaabc,但我只是想在編輯文本中顯示abc,有無論如何,我可以擺脫冗餘文本?並在edittext中插入一個\ n之後10個字符? – user2387107 2014-08-27 16:28:16

回答

0

我還沒有試過這種代碼,因爲我剛剛在一個文本編輯器上做了這個。

這應該每10個符號添加一個換行符到文本。即時通訊並不完全確定它是否是一個符號,因此,您可能想檢查一下。如果它確實包括在內,你將不得不多做一些更復雜的工作:)

tw = new TextWatcher() 
{   
    public void beforeTextChanged(CharSequence s,int start,int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    { 
     if (s.toString().length()%10 == 0) {        
      txtData.removeTextChangedListener(tw); 
      txtData.setText(s.toString() + "\n"); 
      txtData.addTextChangedListener(tw); 
     } 
    } 
}; 
txtData.addTextChangedListener(tw); 
+0

非常感謝DANIEL,它現在可以工作,它確實進入了新行,但是在每9個字符之後,而不是10個字符之後,它仍然會重複第一行的(9)個字符並添加新行,直到行結束。一行可以有26個字符,我希望它僅限於10個字符。除了第一行外,您的解決方案可以完美工作,並將行限制爲9個字符而不是10個。任何想法爲什麼?再次感謝您解決了主要問題。 – user2387107 2014-08-28 04:58:20

+0

我只是改了這​​行** s.toString()。length()%1 == 10)**這行** s.toString()。length()%11 == 0)**它可以工作現在爲10個字符。不知道爲什麼,第一行仍然是有問題的。這是輸出** 123456789-(下一行)678901-(下一行)2345678901-(下一行)2345678901 ...等等** – user2387107 2014-08-28 05:03:30

+0

我將不得不讓一個項目自己來嘗試這個,稍後可能會研究它上:) – 2014-08-28 10:02:12