Мне нужно выделить и сделать URL в тексте кликабельным, динамически.
Для этого я использую метод ниже
private SpannableString addClickablePart(String string) {
string = string.replaceAll("\\n"," \n ");
string += " ";
SpannableString ss = new SpannableString(string);
String[] words = string.split(" ");
for (final String word : words) {
if (CommonUtilities.isValidURL(word)) {
int lastIndex = 0;
while(lastIndex != -1){
lastIndex = string.indexOf(word+" ",lastIndex);
if(lastIndex != -1){
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
//use word here to make a decision
isRefreshingNecessary = false;
Intent mIntent = new Intent(ctx, UserWebsiteActivity.class);
mIntent.putExtra("website", word);
startActivity(mIntent);
}
};
ss.setSpan(clickableSpan, lastIndex, lastIndex + word.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
lastIndex += word.length();
}
}
}
}
return ss;
}
Его работа для большинства случаев. Но, не работая во всех случаях в качестве приведенного ниже примера.
Информация о ценах, предоставленная вам в ваших условиях плана и условия об этих диапазонах номеров больше не будут применяться и будут заменяется этой структурой зарядки. См. Www.ee.co.uk/ukcalling для Дополнительная информация.
Как, в приведенном выше случае, когда я разбил всю строку, используя
String[] words = string.split(" ");
или
String[] words = string.split("\\s+");
Я получил See www.ee.co.uk/ukcalling for
как одно слово. Вместо этого мне нужны эти 3 - See
, www.ee.co.uk/ukcalling
и for
как 3 разных слова, а не как сгруппированные как одно слово.
Я не могу понять, что не так в плане разделения пространства. Пожалуйста, помогите мне узнать.