Получить значение текста ссылки при щелчке в текстовом представлении в android

У меня есть TextView . Я добавил специальные ссылки, такие как "@ abc" , "# android" , сопоставив некоторый шаблон регулярного выражения. Ссылки отображаются правильно. Однако я не могу извлечь текст ссылки, по которой щелкнули.Я использую SpannableString , чтобы установить текст в текстовое представление. Затем я устанавливаю интервалы, используя свой собственный ClickableSpan . Работает нормально. Кроме того, я также могу поймать событие onclick. Но метод onClick () имеет параметр View. Если я вызываю getText () в представлении (конечно, после преобразования его типа в TextView), он возвращает весь текст. Я много искал, но всегда находил способы добавить ссылки и поймать событие , а вот про получение текста ссылки ни разу не сказано.

Это код, который я использую для добавления ссылок и получения onclick. Я получил код из одного из потоков SO.

Pattern pattern = Pattern.compile("@[\\w]+");
Matcher matcher = pattern.matcher(tv.getText());//tv is my TextView
while (matcher.find()) {
    int x = matcher.start();
    int y = matcher.end();
    final android.text.SpannableString f = new android.text.SpannableString(
    tv.getText());
    f.setSpan(new InternalURLSpan(new View.OnClickListener() {
        public void onClick(View v) {
        showDialog(1);
    }
}), x, y, android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(f);
tv.setLinkTextColor(Color.rgb(19, 111, 154));
tv.setLinksClickable(true);

Вот InternalURLSpan:

class InternalURLSpan extends android.text.style.ClickableSpan {
    View.OnClickListener mListener;

    public InternalURLSpan(View.OnClickListener listener) {
        mListener = listener;
    }

    @Override
    public void onClick(View widget) {
        mListener.onClick(widget);
        TextView tv = (TextView) widget;
        System.out.println("tv.gettext() :: " + tv.getText());
        Toast.makeText(MyActivity.this,tv.getText(),
        Toast.LENGTH_SHORT).show();
    }
}

Можно ли получить текст нажатой ссылки? Если нет, есть ли способ связать некоторые данные о конкретной ссылке и знать, на какую ссылку нажимают? Есть указатели.

Спасибо

12
задан Arunkumar 11 October 2011 в 07:42
поделиться