2015-04-08 66 views
0

我的應用程序需要像在textView中存儲的這種場景我存儲「@dev將轉到home並且@rooy將轉到station。我想打開一個撥號程序來調用被點擊的人。爲每個Spanned字符串註冊單獨的點擊

但是使用這個代碼,如果我點擊任何@words它顯示了整個字符串。 我烤的字符串。

用戶可以輸入自己的字符串,可能是他/她進入或不@contact並沒有定義索引相同

multiAutoCompleteTextView.setText(addClickablePart(desc), TextView.BufferType.SPANNABLE); 
private SpannableString addClickablePart(String str) { 
    SpannableString ss = new SpannableString(str); 
    Pattern pattern = Pattern.compile("[@]\\w*"); 
    Matcher matcher = pattern.matcher(str); 

    while (matcher.find()) { 
     ClickableSpan clickableSpan = new ClickableSpan() { 
      @Override 
      public void onClick(View textView) { 
       // do toasting 

       TextView b = (TextView)textView; 
       String buttonText = b.getText().toString(); 
       Toast.makeText(ViewNote.this,buttonText,Toast.LENGTH_SHORT).show(); 
      } 
     }; 
     ss.setSpan(clickableSpan, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } 
    return ss; 
} 
+0

那麼,存儲在點擊的聯繫信息? – npace

+0

和你想表現什麼? – Blackbelt

+0

我有一個單獨的查詢。從這我只想發送名稱到下一個活動。 –

回答

0

你需要t o存儲與每個ClickableSpan相關的文本。嘗試是這樣的:

public static class ClickableSegmentSpan extends ClickableSpan { 

     private String segment; 

     public ClickableSegmentSpan(String segment) { 
      this.segment = segment; 
     } 

     @Override 
     public void onClick(View widget) { 
      Toast.makeText(widget.getContext(), segment, Toast.LENGTH_SHORT).show(); 
     } 
    } 

addClickablePart方法會改變這樣的:

private SpannableString addClickablePart(String str) { 
     SpannableString ss = new SpannableString(str); 
     Pattern pattern = Pattern.compile("[@]\\w*"); 
     Matcher matcher = pattern.matcher(str); 

     while (matcher.find()) { 
      int start = matcher.start(); 
      int end = matcher.end(); 
      ss.setSpan(new ClickableSegmentSpan(str.substring(start, end)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     } 
     return ss; 
    } 
相關問題