2015-09-28 57 views
0

在我的應用程序中,用戶可以在MultiAutoComplete中輸入#,服務器的建議將會在#之後顯示。例如:如何檢測TextWatcher Android中當前光標位置的變化?

用戶類型#foo,服務器返回MultiAutoComplete文本,如#food#football

現在一切正常,如果光標位於文本的末尾。正確的方法是獲取最後一個詞,檢測它是否以#開頭並將其發送到服務器。當用戶正在編輯文本並將光標設置在中間某處時,問題就開始了。 TextWatcher只檢測最後一個單詞,因此它看不到更改。

我看到的唯一解決方案是每個字母都保存整個文本,並且每次比較以查看更改。

你知道這個解決方案嗎?

TextWatcher看起來是這樣的:

TextWatcher tagsWatcher = new TextWatcher() { 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      String tag = getLastTag(s); 
      if (tag.length() > 0) { 
       TagServerService.getTags(tag, city, tagListener); 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }; 
+1

'「如何檢測TextWatcher Android中當前光標位置的變化?」'使用'SpanWatcher' – pskink

+0

@pskink如何將'SpanWatcher'附加到'AutoComplete'? –

+1

「當此類型的對象附加到** Spannable **時,將調用其方法來通知其他標記對象已添加,更改或刪除。」你不附加到'自動完成',而是附加到'Spannable'文本 – pskink

回答

0

TextWatcher用來放哨上的EditText內容,而用戶輸入的數據。它允許您在EditText上輸入每個字符時跟蹤。 follow this example code

+0

是的,這就是我所做的。問題在於我也想跟蹤文本中間的變化,而不僅僅是結尾。 –

+1

@kodw'SpanWatcher'使用它 – pskink

相關問題