событие клика для Android

Хорошо. Это мои проблемы.

Мне нужно использовать регулярные выражения для вывода всего, кроме букв, а затем мне нужно заключить найденные слова в тег $ word. С этим str = str.replaceAll (pattern, "$ 0") ;. сейчас я отфильтровываю все нужные элементы (знаки препинания, числа и т. д.), но он включает каждую букву внутри каждого слова в теге, а не в слове. Так как же использовать регулярное выражение для группировки букв в слове?

от "(тег o, ручка) t (закрытие) (открытие тега) h (закрытие) (открытие тега) i (закрытие) (открытие тега) s (закрытие) (открытие тега) i (закрытие) (открытие тега) s (закрытие) (открытие тега) w (закрытие) (открытие тега) r (закрытие) (открытие тега) o (закрытие) (открытие тега) n (закрыто) (тег открыт) g (закрыто) ";

чтобы:

"(открытый тег) Этот (закрытый) (открытый тег) есть (закрытый) (открытый тег) правый (закрытый)";

затем я делаю их кликабельными, и мне нужно отловить событие click и получить позицию на экране по нажатому слову, так как я хочу использовать событие clicked, чтобы всплывающая подсказка отображалась чуть ниже слова, по которому щелкнули. Спасибо за помощь.

открытый класс MainActivity расширяет Activity {

public String text = "This is just a sentence to test you. 23 this is another number23!g?";
public TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    text = explode(text);

    tv = (TextView) findViewById(R.id.tv1);

    tv.setLinksClickable(true);
    tv.setMovementMethod(LinkMovementMethod.getInstance());

    Spanned article = Html.fromHtml(text, null, null);
    setHTML(article);
}


public void setHTML(Spanned html) {
      SpannableString message = new SpannableString(html.toString());
      Object[] spans = html.getSpans(0, html.length(), Object.class);
      for (Object span : spans) {
         int start = html.getSpanStart(span);
         int end = html.getSpanEnd(span);
         int flags = html.getSpanFlags(span);
         if (span instanceof URLSpan) {
            URLSpan urlSpan = (URLSpan) span;
            span = new CallbackSpan(urlSpan.getURL());
         }
         message.setSpan(span, start, end, flags);
      }
      tv.setText(message);
   }
    public String explode(String str){  
      String pattern = "([a-zA-Z])";
      str = str.replaceAll(pattern, "<a href=\"$0\">$0</a>");
      return str;
    }

   private final class CallbackSpan extends ClickableSpan {

      private String m_data;
      private String url_main;

      public CallbackSpan(String url) {
         m_data = url.substring(0);
         url_main = url;

      }

      public void onClick(View view) {

          TextView item = (TextView)findViewById(R.id.tv2);
          item.setText(url_main + " was clicked.");
          Log.d("item", url_main);
      }
   }

}

Ответы на вопрос(2)

Ваш ответ на вопрос