Использование Spans для замены нескольких экземпляров
Я использую код ниже, чтобы изменить экземпляры [text]
с изображением. Код, который у меня есть, заменяет первый экземпляр по мере необходимости, но игнорирует вхождение друг друга. Я хотел бы изменить каждый экземпляр [text]
из содержимого содержимого строки, например:
Hello this is [text] a test [test] sample of input [text] string.
Текст в скобках может отличаться каждый раз.
Код:
public SpannableStringBuilder smileyConvert(String msgBody) {
SpannableStringBuilder ssb = new SpannableStringBuilder(msgBody);
if( msgBody.contains("[") && msgBody.contains("]") ){
setStartEnd(msgBody);
AssetManager am = ctx.getAssets();
InputStream imgStream = null;
try{
imgStream = am.open("emotes/" + ico + ".gif");
}catch(IOException e){
e.printStackTrace();
}
Bitmap smiley = BitmapFactory.decodeStream(imgStream);
smiley = sizeBitmap(smiley);
ssb.setSpan(new ImageSpan(ctx, smiley), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
return ssb;
}else
return ssb;
}
public void setStartEnd(String msgBody) {
start = msgBody.indexOf("[");
end = (msgBody.indexOf("]") + 1);
return;
}
Любые советы будут оценены.